️ Dieses Paket wird zugunsten dieses Pakets veraltet sein: https://github.com/open-southeners/laravel-model-status
Codetypisierte Laravel-Status für Eloquent-Modelle.
Sie können das Paket über Composer installieren:
composer require skore-labs/laravel-status
Anschließend müssen Sie die Paketkonfiguration und Migrationen veröffentlichen, damit Sie die neue Statustabelle ändern und/oder migrieren können:
php artisan vendor:publish --provider="SkoreLabsLaravelStatusServiceProvider"
Fügen Sie Ihrem Modell Status hinzu, indem Sie SkoreLabsLaravelStatusTraitsHasStatuses
und die Schnittstelle SkoreLabsLaravelStatusContractsStatusable
hinzufügen, damit einige vordefinierte Ereignisse übergeben werden können (siehe oben). Hier ist ein Beispiel:
<?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...
}
Passen Sie die Enumeration für die Statusprüfung an (überprüfen Sie mithilfe des Spatie/Enum -Pakets deren Dokumentation):
/**
* Get the statuses enum used for some utilities.
*
* @return string|SpatieEnumEnum
*/
public static function statusesClass ()
{
return App Statuses PostStatuses::class;
}
Hinweis: Dies ist nur dann nicht erforderlich, wenn Sie NICHT alle Ihre Modellstatus-Enumerationsklassen in AppEnums
als ModelStatus
gespeichert haben.
Hinweis: Bei allen Methoden wird die Groß-/Kleinschreibung bei Statusnamen nicht beachtet.
Überprüfen Sie, ob das Modell Status(e) hat.
Hinweis: Es wird der aktuell übereinstimmende Statusname zurückgegeben.
// Post has status Published
$ post -> hasStatus ( ' published ' );
// Post has status Published or Was Published
$ post -> hasStatus ([ ' published ' , ' was published ' ]);
Status festlegen oder Status ändern nur, wenn der vorherige Status mit dem Schlüssel übereinstimmt.
// Set post status to Was Published
$ post -> setStatus ( ' was published ' );
// Change if post has status Published to Was Published.
$ post -> setStatus ([ ' published ' => ' was published ' ]);
Sie können das Attribut auch verwenden, um einen Status zu setzen:
$ 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 ();
Sie können dasselbe auch mit der Methode setStatusWhen
tun, wie im obigen Beispiel mit setStatus
.
// Change if post has status Published to Was Published.
$ post -> setStatusWhen ( ' published ' , ' was published ' );
Wenn ein Parameter angegeben wird, fungiert er als Alias von hasStatus.
Wenn ein assoziatives Array bereitgestellt wird, fungiert es als Alias von setStatus.
Andernfalls wird die Beziehung einfach als $post->status
oder $post->status()->first()
abgerufen.
Sie können auch nach Umfang filtern:
Post:: status ( ' published ' );
Post:: where ( ' user_id ' , Auth:: id ())-> status ( ' published ' );
Erhalten Sie alle möglichen Modellstatus.
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 ' ]);
Rufen Sie den Standardstatus des Modells ab.
// 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 ();
Dieses und alle unsere Laravel-Pakete basieren so weit wie möglich auf der LTS-Unterstützung von Laravel.
Lesen Sie mehr: https://laravel.com/docs/master/releases#support-policy