️ Este pacote será descontinuado em favor deste: https://github.com/open-southeners/laravel-model-status
Status digitados em código Laravel para modelos Eloquent.
Você pode instalar o pacote via compositor:
composer require skore-labs/laravel-status
Então você precisará publicar a configuração do pacote e as migrações, para poder modificar e/ou migrar a nova tabela de status:
php artisan vendor:publish --provider="SkoreLabsLaravelStatusServiceProvider"
Adicione status ao seu modelo adicionando SkoreLabsLaravelStatusTraitsHasStatuses
e a interface SkoreLabsLaravelStatusContractsStatusable
para que ele possa passar alguns eventos predefinidos (veja acima), aqui está um exemplo:
<?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...
}
Personalize enum para verificação de status (usando o pacote spatie/enum , verifique sua documentação):
/**
* Get the statuses enum used for some utilities.
*
* @return string|SpatieEnumEnum
*/
public static function statusesClass ()
{
return App Statuses PostStatuses::class;
}
Nota: Isso não é obrigatório, apenas se você NÃO tiver todas as classes de enum de status do modelo armazenadas em AppEnums
como ModelStatus
.
Nota: Todos os métodos não diferenciam maiúsculas de minúsculas nos nomes de status.
Verifique se o modelo possui status(s).
Nota: Ele retorna o nome do status correspondente atual.
// Post has status Published
$ post -> hasStatus ( ' published ' );
// Post has status Published or Was Published
$ post -> hasStatus ([ ' published ' , ' was published ' ]);
Defina o status ou altere o status somente se o status anterior corresponder à chave.
// Set post status to Was Published
$ post -> setStatus ( ' was published ' );
// Change if post has status Published to Was Published.
$ post -> setStatus ([ ' published ' => ' was published ' ]);
Você também pode usar o atributo para definir um status:
$ 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 ();
Você também pode fazer o mesmo com o método setStatusWhen
como no exemplo acima com setStatus
.
// Change if post has status Published to Was Published.
$ post -> setStatusWhen ( ' published ' , ' was published ' );
Se um parâmetro for fornecido, ele atuará como um alias de hasStatus.
Se uma matriz associativa for fornecida, ela atuará como um alias de setStatus.
Caso contrário, ele apenas recuperará o relacionamento como $post->status
ou $post->status()->first()
Além disso, você pode filtrar por escopo:
Post:: status ( ' published ' );
Post:: where ( ' user_id ' , Auth:: id ())-> status ( ' published ' );
Obtenha todos os status de modelo possíveis.
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 ' ]);
Obtenha o status padrão do modelo.
// 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 ();
Este e todos os nossos pacotes Laravel seguem tanto quanto possível o suporte LTS do Laravel.
Leia mais: https://laravel.com/docs/master/releases#support-policy