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框架的区、县、省和邮政编码包
此包将帮助使用Laravel框架的开发者在开发过程中更轻松地存储地址信息
安装
- 通过Composer安装包
thelink/laravel-thailand
composer require thelink/laravel-thailand
- 在
config/app.php
中添加包的服务提供者/* * Package Service Providers... */ TheLink\ThaiAddress\ThaiAddressServiceProvider::class,
- 声明使用包的配置文件
php artisan vendor:publish --provider="TheLink\ThaiAddress\ThaiAddressServiceProvider" --tag="config"
- 声明使用包的迁移文件
php artisan vendor:publish --provider="TheLink\ThaiAddress\ThaiAddressServiceProvider" --tag="migrations" php artisan migrate
- 声明使用包的种子文件
php artisan vendor:publish --provider="TheLink\ThaiAddress\ThaiAddressServiceProvider" --tag="seeds" composer dump-autoload
- 将区、县、省和邮政编码添加到数据库中,修改
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
使用方法
添加信息后,用户通常可以通过包提供的模型来使用,包括以下模型:SubDistrict
、District
、Province
和PostalCode
区
// ข้อมูลทุกตำบล $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在区、县、省和邮政编码中进行