Toggle the published state of your Eloquent models easily.
You can install the package via composer:
composer require pawelmysior/laravel-publishableTo start you need to add a published_at nullable timestamp column to your table.
Put this in your table migration:
$table->timestamp('published_at')->nullable();Now use the trait on the model
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use PawelMysior\Publishable\Publishable;
class Post extends Model
{
use Publishable;
}You can now use those features:
// Get only published posts
Post::published()->get();
// Get only unpublished posts
Post::unpublished()->get();
// Check if the post is published
$post->isPublished();
// Check if the post is unpublished
$post->isUnpublished();
// Publish the post
$post->publish();
// Unpublish the post
$post->unpublish();A post is considered published when the published_at is not null and in the past.
A post is considered unpublished when the published_at is null or in the future.
The MIT License (MIT). Please see License File for more information.