แพ็คเกจ laravel-attributes
เป็นเครื่องมือที่ออกแบบมาเพื่อช่วยให้นักพัฒนา Laravel จัดการและปรับใช้คุณสมบัติที่กำหนดเองในโปรเจ็กต์ของตนได้อย่างง่ายดาย ช่วยให้คุณสามารถกำหนดคุณลักษณะได้โดยตรงบนโมเดล Eloquent ทำให้ง่ายต่อการจัดการคุณสมบัติแบบไดนามิกหรือจากการคำนวณโดยไม่ต้องแก้ไขสคีมาฐานข้อมูลโดยตรง ด้วยแพ็คเกจนี้ คุณสามารถสร้างและกำหนดค่าชุดคุณลักษณะสำหรับโมเดลได้ ทำให้ง่ายต่อการจัดระเบียบและขยายการจัดการข้อมูลในแอปพลิเคชัน Laravel มีประโยชน์อย่างยิ่งสำหรับโครงการที่ต้องการโมเดลข้อมูลที่ปรับแต่งได้และยืดหยุ่น
คุณไม่มีความเครียดกับคุณลักษณะ! คุณสามารถสร้างแอตทริบิวต์สำหรับรุ่นใดก็ได้และแสดงผล เช่น น้ำดื่ม :)
PHP: ^8.0
Laravel Framework: ^9.0
คุณสมบัติ | L9 | L10 |
---|---|---|
1.0 |
composer require milwad/laravel-attributes
หลังจากเผยแพร่ไฟล์กำหนดค่าแล้ว
php artisan vendor:publish --provider= " MilwadLaravelAttributesLaravelAttributesServiceProvider "
หลังจากเผยแพร่ คุณจะย้ายไฟล์การย้ายข้อมูล
php artisan migrate
ขั้นแรกให้คุณใช้คุณลักษณะในแบบจำลอง
<?php
namespace App Models ;
use Illuminate Database Eloquent Factories HasFactory ;
use Illuminate Database Eloquent Model ;
use Milwad LaravelAttributes Traits Attributable ;
class Product extends Model
{
use HasFactory, Attributable;
}
หลังจากนั้นคุณสามารถเข้าถึงความสัมพันธ์ attributes
และอื่น ๆ...
หากคุณต้องการแนบแอตทริบิวต์ให้กับโมเดล คุณสามารถใช้วิธี attachAttribute
ได้
วิธี attachAttribute
ใช้ title
และ value
$ product = Product:: query ()-> create ([
' name ' => ' milwad ' ,
' content ' => ' laravel attributes ' ,
]);
$ product -> attachAttribute ( ' age ' , ' 17 ' );
หากคุณมีแอตทริบิวต์หลายรายการ คุณสามารถใช้เมธอด attachAttributes
เพื่อบันทึกแอตทริบิวต์สำหรับโมเดลได้
$ product = Product:: query ()-> create ([
' name ' => ' milwad ' ,
' content ' => ' text ' ,
]);
$ data = [
[
' title ' => ' milwad ' ,
' value ' => ' developer ' ,
],
[
' title ' => ' milwad2 ' ,
' value ' => ' developer2 ' ,
],
[
' title ' => ' milwad3 ' ,
' value ' => ' developer3 ' ,
],
[
' title ' => ' milwad4 ' ,
' value ' => ' developer4 ' ,
],
[
' title ' => ' milwad5 ' ,
' value ' => ' developer5 ' ,
],
[
' title ' => ' milwad6 ' ,
' value ' => ' developer6 ' ,
],
];
$ product -> attachAttributes ( $ data );
หากคุณต้องการดึงข้อมูลคุณลักษณะจากความสัมพันธ์คุณสามารถใช้ attributes
ได้
$ product = Product:: query ()-> with ( ' attributes ' )-> get ();
$ product -> attributes
บางทีคุณอาจต้องการตรวจสอบว่าโมเดลหนึ่งมีค่าแอตทริบิวต์ที่คุณสามารถใช้วิธี hasAttributeValue
ได้
if ( $ product -> hasAttributeValue ( ' 17 ' )) {
return ' attribute value ' ;
}
return ' no attribute value ' ;
บางทีคุณอาจต้องการตรวจสอบว่าโมเดลหนึ่งมีชื่อแอตทริบิวต์ที่คุณสามารถใช้วิธี hasAttributeTitle
ได้
if ( $ product -> hasAttributeTitle ( ' milwad ' )) {
return ' attribute title ' ;
}
return ' no attribute title ' ;
หากคุณต้องการลบแอตทริบิวต์ทั้งหมดของโมเดลเดียว คุณสามารถใช้เมธอด deleteAllAttribute
ได้
$ product -> deleteAllAttribute ();
หากคุณต้องการลบแอตทริบิวต์เฉพาะของโมเดล คุณสามารถใช้วิธี deleteAttribute
$ product -> deleteAttribute ( ' title ' , ' value ' );
หากคุณต้องการลบแอตทริบิวต์เฉพาะตามชื่อคุณสามารถใช้วิธี deleteAttributeByTitle
บางทีคุณอาจมีแอตทริบิวต์สองรายการที่มีชื่อเหมือนกัน หากคุณลบด้วยวิธีนี้ คุณลักษณะทั้งสองจะถูกลบออก
$ product -> deleteAttributeByTitle ( ' title ' );
หากคุณต้องการลบแอตทริบิวต์เฉพาะตามค่า คุณสามารถใช้วิธี deleteAttributeByValue
บางทีคุณอาจมีสองแอตทริบิวต์ที่มีค่าเท่ากัน หากคุณลบด้วยวิธีนี้ คุณลักษณะทั้งสองจะถูกลบ
$ product -> deleteAttributeByValue ( ' value ' );
รันการทดสอบด้วย:
vendor/bin/pest
composer test
composer test-coverage
หากคุณต้องการเปลี่ยนชื่อตารางการย้ายข้อมูลหรือเปลี่ยนโมเดลเริ่มต้นคุณสามารถใช้การกำหนดค่า laravel-attributes
ที่มีอยู่ในโฟลเดอร์ config
<?php
return [
/*
* Table config
*
* Here it's a config of migrations.
*/
' tables ' => [
/*
* Get table name of migration.
*/
' name ' => ' attributes ' ,
/*
* Use uuid as primary key.
*/
' uuids ' => false , // Also in beta !!!
],
/*
* Model class name for attributes table.
*/
' attributes_model ' => Milwad LaravelAttributes Attribute::class,
];
โครงการนี้เกิดขึ้นได้ต้องขอบคุณทุกคนที่มีส่วนร่วม มีส่วนร่วม
หากคุณพบข้อบกพร่องเกี่ยวกับความปลอดภัย โปรดส่งอีเมลไปที่ [email protected] แทนการใช้ตัวติดตามปัญหา
ถ้าแพ็คเกจนี้มีประโยชน์ก็ซื้อกาแฟให้ได้นะคะ :) ❤️
0xf208a562c5a93DEf8450b656c3dbc1d0a53BDE58