thelink/laravel-thailand

此包可以帮助Laravel开发者通过简单的方式存储用户地址

v1.0.1 2020-05-09 06:18 UTC

This package is auto-updated.

Last update: 2024-09-09 16:39:02 UTC


README

Laravel框架的区、县、省和邮政编码包

Latest Stable Version Build Status StyleCI Scrutinizer Code Quality Total Downloads GitHub license

此包将帮助使用Laravel框架的开发者在开发过程中更轻松地存储地址信息

安装

  1. 通过Composer安装包thelink/laravel-thailand
    composer require thelink/laravel-thailand
  2. config/app.php中添加包的服务提供者
    /*
     * Package Service Providers...
     */
    TheLink\ThaiAddress\ThaiAddressServiceProvider::class,
  3. 声明使用包的配置文件
    php artisan vendor:publish --provider="TheLink\ThaiAddress\ThaiAddressServiceProvider" --tag="config"
  4. 声明使用包的迁移文件
    php artisan vendor:publish --provider="TheLink\ThaiAddress\ThaiAddressServiceProvider" --tag="migrations"
    php artisan migrate
  5. 声明使用包的种子文件
    php artisan vendor:publish --provider="TheLink\ThaiAddress\ThaiAddressServiceProvider" --tag="seeds"
    composer dump-autoload
  6. 将区、县、省和邮政编码添加到数据库中,修改database/seeds/DatabaseSeeder.php文件如下
    <?php
    
    use Illuminate\Database\Seeder;
    
    class DatabaseSeeder extends Seeder
    {
        /**
         * Run the database seeds.
         *
         * @return void
         */
        public function run()
        {
             $this->call(ThaiAddressTablesSeeder::class);
        }
    }
    php artisan db:seed

使用方法

添加信息后,用户通常可以通过包提供的模型来使用,包括以下模型:SubDistrictDistrictProvincePostalCode

// ข้อมูลทุกตำบล
$sub_districts = SubDistrict::all();

foreach ($sub_districts as $sub_district) {
    // แสดงข้อมูลตำบล
    print_r($sub_district);
    
    // แสดงข้อมูลอำเภอที่มีความสัมพันธ์กับตำบลนี้
    print_r($sub_district->district);
    
    // แสดงข้อมูลรหัสไปรษณีย์ที่มีความสัมพันธ์กับตำบลนี้
    print_r($sub_district->postal_code);
}
// ข้อมูลทุกอำเภอ
$districts = District::all();

foreach ($districts as $district) {
    // แสดงข้อมูลอำเภอ
    print_r($district);
    
    // แสดงข้อมูลตำบลที่มีความสัมพันธ์กับอำเภอนี้
    print_r($district->sub_districts);
    
    // แสดงข้อมูลจังหวัดที่มีความสัมพันธ์กับอำเภอนี้
    print_r($district->province);
    
    // แสดงข้อมูลรหัสไปรษณีย์ที่มีความสัมพันธ์กับอำเภอนี้
    print_r($district->postal_codes);
}
// ข้อมูลทุกจังหวัด
$provinces = Province::all();

foreach ($provinces as $province) {
    // แสดงข้อมูลจังหวัด
    print_r($province);
    
    // แสดงข้อมูลอำเภอที่มีความสัมพันธ์กับจังหวัดนี้
    print_r($province->districts);
    
    // แสดงข้อมูลรหัสไปรษณีย์ที่มีความสัมพันธ์กับจังหวัดนี้
    print_r($province->postal_codes);
}
邮政编码
// ข้อมูลรหัสไปรษณีย์ทั้งหมด
$postal_codes = PostalCode::all();

foreach ($postal_codes as $postal_code) {
    // แสดงข้อมูลรหัสไปรษณีย์
    print_r($postal_code);
    
    // แสดงข้อมูลตำบลที่มีความสัมพันธ์กับรหัสไปรษณีย์นี้
    print_r($postal_code->sub_district);
    
    // แสดงข้อมูลอำเภอที่มีความสัมพันธ์กับรหัสไปรษณีย์นี้
    print_r($postal_code->district);
    
    // แสดงข้อมูลจังหวัดที่มีความสัมพันธ์กับรหัสไปรษณีย์นี้
    print_r($postal_code->province);
}

如果用户不希望使用包提供的模型,可以创建新的模型,需要实现包提供的Contract,并修改config/thai_address.php文件以匹配

<?php

namespace App;

use TheLink\ThaiAddress\Contracts\SubDistrict as SubDistrictContract;
use Illuminate\Database\Eloquent\Model;

class SubDistrict extends Model implements SubDistrictContract
{
    //
}
<?php

namespace App;

use TheLink\ThaiAddress\Contracts\District as DistrictContract;
use Illuminate\Database\Eloquent\Model;

class District extends Model implements DistrictContract
{
    //
}
<?php

namespace App;

use TheLink\ThaiAddress\Contracts\Province as ProvinceContract;
use Illuminate\Database\Eloquent\Model;

class Province extends Model implements ProvinceContract
{
    //
}
<?php

namespace App;

use TheLink\ThaiAddress\Contracts\PostalCode as PostalCodeContract;
use Illuminate\Database\Eloquent\Model;

class PostalCode extends Model implements PostalCodeContract
{
    //
}

创建自己的模型时,别忘了修改配置

<?php

return [

    'models' => [
        'sub_district' => TheLink\ThaiAddress\Models\SubDistrict::class,
        'district' => TheLink\ThaiAddress\Models\District::class,
        'province' => TheLink\ThaiAddress\Models\Province::class,
        'postal_code' => TheLink\ThaiAddress\Models\PostalCode::class,
    ],

    'table_names' => [
        'sub_district' => 'sub_districts',
        'district' => 'districts',
        'province' => 'provinces',
        'postal_code' => 'postal_codes',
    ],

];

此外,此包还提供了API的使用,适用于使用Vue.js和axios的用户

+--------+----------+----------------------------------+---------------------+--------------------------------------------------------------------------+--------------+
| Domain | Method   | URI                              | Name                | Action                                                                   | Middleware   |
+--------+----------+----------------------------------+---------------------+--------------------------------------------------------------------------+--------------+
|        | GET|HEAD | api/district/all                 | district.all        | TheLink\ThaiAddress\Controllers\ThaiAddressController@getAllDistricts    | api          |
|        | GET|HEAD | api/district/search/{query}      | district.search     | TheLink\ThaiAddress\Controllers\ThaiAddressController@searchDistrict     | api          |
|        | GET|HEAD | api/district/{id}                | district.get        | TheLink\ThaiAddress\Controllers\ThaiAddressController@getDistrict        | api          |
|        | GET|HEAD | api/postal-code/all              | postal-code.all     | TheLink\ThaiAddress\Controllers\ThaiAddressController@getAllPostalCodes  | api          |
|        | GET|HEAD | api/postal-code/search/{query}   | postal-code.search  | TheLink\ThaiAddress\Controllers\ThaiAddressController@searchPostalCode   | api          |
|        | GET|HEAD | api/postal-code/{id}             | postal-code.get     | TheLink\ThaiAddress\Controllers\ThaiAddressController@getPostalCode      | api          |
|        | GET|HEAD | api/province/all                 | province.all        | TheLink\ThaiAddress\Controllers\ThaiAddressController@getAllProvinces    | api          |
|        | GET|HEAD | api/province/search/{query}      | province.search     | TheLink\ThaiAddress\Controllers\ThaiAddressController@searchProvince     | api          |
|        | GET|HEAD | api/province/{id}                | province.get        | TheLink\ThaiAddress\Controllers\ThaiAddressController@getProvince        | api          |
|        | GET|HEAD | api/search/address/{query}       | search.address      | TheLink\ThaiAddress\Controllers\ThaiAddressController@search             | api          |
|        | GET|HEAD | api/sub-district/all             | sub-district.all    | TheLink\ThaiAddress\Controllers\ThaiAddressController@getAllSubDistricts | api          |
|        | GET|HEAD | api/sub-district/search/{query}  | sub-district.search | TheLink\ThaiAddress\Controllers\ThaiAddressController@searchSubDistrict  | api          |
|        | GET|HEAD | api/sub-district/{id}            | sub-district.get    | TheLink\ThaiAddress\Controllers\ThaiAddressController@getSubDistrict     | api          |
+--------+----------+----------------------------------+---------------------+--------------------------------------------------------------------------+--------------+

用户可以通过TheLink\ThaiAddress\Controllers\ThaiAddressController@search或API api/search/address/{query}来使用搜索功能,搜索将使用keyword在区、县、省和邮政编码中进行