️ 이 패키지는 다음 패키지를 위해 더 이상 사용되지 않습니다: https://github.com/open-southeners/laravel-model-status
Eloquent 모델에 대한 Laravel 코드 유형 상태.
작곡가를 통해 패키지를 설치할 수 있습니다.
composer require skore-labs/laravel-status
그런 다음 패키지 구성 및 마이그레이션을 게시해야 합니다. 그러면 새 상태 테이블을 수정 및/또는 마이그레이션할 수 있습니다.
php artisan vendor:publish --provider="SkoreLabsLaravelStatusServiceProvider"
미리 정의된 일부 이벤트(위 참조)를 전달할 수 있도록 SkoreLabsLaravelStatusTraitsHasStatuses
및 인터페이스 SkoreLabsLaravelStatusContractsStatusable
추가하여 모델에 상태를 추가하세요. 예는 다음과 같습니다.
<?php
namespace App ;
use Illuminate Database Eloquent Model ;
use SkoreLabs LaravelStatus Contracts Statusable ;
use SkoreLabs LaravelStatus Traits HasStatuses ;
class Post extends Model implements Statusable
{
use HasStatuses;
// Your model logic here...
}
상태 확인을 위해 enum을 사용자 정의합니다( spatie/enum 패키지 사용, 해당 설명서 확인).
/**
* Get the statuses enum used for some utilities.
*
* @return string|SpatieEnumEnum
*/
public static function statusesClass ()
{
return App Statuses PostStatuses::class;
}
참고: 모든 모델 상태 열거형 클래스가 AppEnums
에 ModelStatus
로 저장되어 있지 않은 경우에만 이는 필수가 아닙니다.
참고: 모든 메소드는 상태 이름에서 대소문자를 구분하지 않습니다.
모델에 상태가 있는지 확인하세요.
참고: 현재 일치하는 상태 이름을 반환합니다.
// Post has status Published
$ post -> hasStatus ( ' published ' );
// Post has status Published or Was Published
$ post -> hasStatus ([ ' published ' , ' was published ' ]);
이전 상태가 키와 일치하는 경우에만 상태를 설정하거나 상태를 변경하세요.
// Set post status to Was Published
$ post -> setStatus ( ' was published ' );
// Change if post has status Published to Was Published.
$ post -> setStatus ([ ' published ' => ' was published ' ]);
속성을 사용하여 상태를 설정할 수도 있습니다.
$ post -> status = ' was published ' ;
// Better use status method for this
if ( $ post -> hasStatus ( ' published ' )) {
$ post -> status = ' was published ' ;
}
// When save it check and attach the status
$ post -> save ();
위의 setStatus
예제와 같이 setStatusWhen
메소드를 사용하여 동일한 작업을 수행할 수도 있습니다.
// Change if post has status Published to Was Published.
$ post -> setStatusWhen ( ' published ' , ' was published ' );
매개변수가 제공되면 hasStatus의 별칭 역할을 합니다.
연관 배열이 제공되면 이는 setStatus의 별칭 역할을 합니다.
그렇지 않으면 $post->status
또는 $post->status()->first()
로 관계를 검색합니다.
또한 범위별로 필터링할 수도 있습니다.
Post:: status ( ' published ' );
Post:: where ( ' user_id ' , Auth:: id ())-> status ( ' published ' );
가능한 모든 모델 상태를 가져옵니다.
Post:: statuses ();
// You can use Status model as well
Status:: getFrom (Post::class);
// Also specify value to return like '->value('id')'
Status:: getFrom (Post::class, ' id ' );
// Or return the object with columns like '->first(['id', 'name'])'
Status:: getFrom (Post::class, [ ' id ' , ' name ' ]);
모델의 기본 상태를 가져옵니다.
// Default status for post is Published, so it returns Published
Post:: getDefaultStatus ();
// You can use Status model query scope as well
Status:: query ()-> defaultFrom (Post::class)-> first ();
이 패키지와 모든 Laravel 패키지는 Laravel의 LTS 지원을 최대한 따릅니다.
더 읽어보세요: https://laravel.com/docs/master/releases#support-policy