แพ็คเกจนี้จะเลิกใช้แล้วเพื่อสนับสนุนแพ็คเกจนี้: https://github.com/open-southeners/laravel-model-status
สถานะประเภทรหัส Laravel สำหรับโมเดล Eloquent
คุณสามารถติดตั้งแพ็คเกจผ่านทางผู้แต่ง:
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;
}
หมายเหตุ: สิ่งนี้ไม่จำเป็น เฉพาะในกรณีที่คุณไม่มีคลาส enum สถานะโมเดลทั้งหมดของคุณเก็บไว้ใน 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 ();
คุณยังสามารถทำเช่นเดียวกันกับเมธอด setStatusWhen
เหมือนตัวอย่างด้านบนด้วย setStatus
// 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 ทั้งหมดของเราติดตาม LTS ของ Laravel ได้มากที่สุดเท่าที่จะเป็นไปได้
อ่านเพิ่มเติม: https://laravel.com/docs/master/releases#support-policy