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
마이그레이션 테이블 이름을 변경하거나 기본 모델을 변경하려면 config
폴더에 있는 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