baraear / laravel-thailand
The package may help Laravel developer store user address by easily way
Installs: 7 244
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 2
Forks: 5
Open Issues: 2
This package is auto-updated.
Last update: 2024-12-17 18:47:18 UTC
README
แพคเกจตำบล, อำเภอ, จังหวัด และรหัสไปรษณีย์สำหรับ Laravel Framework
แพคเกจนี้จะช่วยให้นักพัฒนาที่ใช้ Laravel Framework ในการพัฒนาสามารถจัดเก็บข้อมูลที่อยู่ได้ง่ายขึ้น
การติดตั้ง
- ติดตั้งแพคเกจ
baraear/laravel-thailand
ผ่านทาง Composercomposer require baraear/laravel-thailand
- ทำการเพิ่ม Service Provider ของแพคเกจใน
config/app.php
/* * Package Service Providers... */ Baraear\ThaiAddress\ThaiAddressServiceProvider::class,
- ประกาศใช้งานไฟล์ config ของแพคเกจ
php artisan vendor:publish --provider="Baraear\ThaiAddress\ThaiAddressServiceProvider" --tag="config"
- ประกาศใช้งานไฟล์ migration ของแพคเกจ
php artisan vendor:publish --provider="Baraear\ThaiAddress\ThaiAddressServiceProvider" --tag="migrations" php artisan migrate
- ประกาศใช้งานไฟล์ seeds ของแพคเกจ
php artisan vendor:publish --provider="Baraear\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
การใช้งาน
หลังจากทำการเพิ่มข้อมูลแล้วโดยปกติผู้ใช้สามารถใช้งานผ่านทาง Models ที่ทางแพคเกจจัดทำไว้ให้ได้เลย ซึ่งมีดังต่อไปนี้ 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); }
ซึ่งหากผู้ใช้ไม่ต้องการใช้งานผ่าน Models ที่แพคเกจจัดทำไว้ผู้ใช้สามารถสร้าง Model ใหม่โดยจำเป็นต้องทำการ implements ด้วย Contract ที่ทางแพคเกจเตรียมไว้ให้และจำเป็นต้องแก้ไข models ในไฟล์ config/thai_address.php
ให้ตรงกันด้วย
<?php namespace App; use Baraear\ThaiAddress\Contracts\SubDistrict as SubDistrictContract; use Illuminate\Database\Eloquent\Model; class SubDistrict extends Model implements SubDistrictContract { // }
<?php namespace App; use Baraear\ThaiAddress\Contracts\District as DistrictContract; use Illuminate\Database\Eloquent\Model; class District extends Model implements DistrictContract { // }
<?php namespace App; use Baraear\ThaiAddress\Contracts\Province as ProvinceContract; use Illuminate\Database\Eloquent\Model; class Province extends Model implements ProvinceContract { // }
<?php namespace App; use Baraear\ThaiAddress\Contracts\PostalCode as PostalCodeContract; use Illuminate\Database\Eloquent\Model; class PostalCode extends Model implements PostalCodeContract { // }
เมื่อสร้าง Models เองอย่าลืมแก้ไข config
<?php return [ 'models' => [ 'sub_district' => Baraear\ThaiAddress\Models\SubDistrict::class, 'district' => Baraear\ThaiAddress\Models\District::class, 'province' => Baraear\ThaiAddress\Models\Province::class, 'postal_code' => Baraear\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 | Baraear\ThaiAddress\Controllers\ThaiAddressController@getAllDistricts | api |
| | GET|HEAD | api/district/search/{query} | district.search | Baraear\ThaiAddress\Controllers\ThaiAddressController@searchDistrict | api |
| | GET|HEAD | api/district/{id} | district.get | Baraear\ThaiAddress\Controllers\ThaiAddressController@getDistrict | api |
| | GET|HEAD | api/postal-code/all | postal-code.all | Baraear\ThaiAddress\Controllers\ThaiAddressController@getAllPostalCodes | api |
| | GET|HEAD | api/postal-code/search/{query} | postal-code.search | Baraear\ThaiAddress\Controllers\ThaiAddressController@searchPostalCode | api |
| | GET|HEAD | api/postal-code/{id} | postal-code.get | Baraear\ThaiAddress\Controllers\ThaiAddressController@getPostalCode | api |
| | GET|HEAD | api/province/all | province.all | Baraear\ThaiAddress\Controllers\ThaiAddressController@getAllProvinces | api |
| | GET|HEAD | api/province/search/{query} | province.search | Baraear\ThaiAddress\Controllers\ThaiAddressController@searchProvince | api |
| | GET|HEAD | api/province/{id} | province.get | Baraear\ThaiAddress\Controllers\ThaiAddressController@getProvince | api |
| | GET|HEAD | api/search/address/{query} | search.address | Baraear\ThaiAddress\Controllers\ThaiAddressController@search | api |
| | GET|HEAD | api/sub-district/all | sub-district.all | Baraear\ThaiAddress\Controllers\ThaiAddressController@getAllSubDistricts | api |
| | GET|HEAD | api/sub-district/search/{query} | sub-district.search | Baraear\ThaiAddress\Controllers\ThaiAddressController@searchSubDistrict | api |
| | GET|HEAD | api/sub-district/{id} | sub-district.get | Baraear\ThaiAddress\Controllers\ThaiAddressController@getSubDistrict | api |
+--------+----------+----------------------------------+---------------------+--------------------------------------------------------------------------+--------------+
ผู้ใช้สามารถใช้งานการค้นหาชื่อตำบล, อำเภอ, จังหวัด และรหัสไปรษณีย์ได้ผ่านทาง Baraear\ThaiAddress\Controllers\ThaiAddressController@search
หรือผ่าน API api/search/address/{query}
ซึ่งการค้นหาจะใช้ keyword ไปค้นหาจากชื่อตำบล, อำเภอ, จังหวัด และรหัสไปรษณีย์ภายในครั้งเดียว