️ このパッケージは非推奨になり、次のパッケージが優先されます: https://github.com/open-southeners/laravel-model-status
Eloquent モデルの Laravel コードタイプのステータス。
パッケージは、composer 経由でインストールできます。
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