Laravel Collect 是我開發的一個收藏文章的擴充套件,借鑑於 cybercog/laravel-love ,我也有幸參加了社群對該擴充套件的外文翻譯文章 為你的 Eloquent 模型新增喜歡和討厭功能。我的初衷是學習怎麼開發 Laravel 擴充套件包,所以實現的功能可能比較簡單,請大神勿噴。但是對於想學習開發 Laravel 擴充套件包的同學還是不錯的。望大家點贊支援,感謝。
最近發現已經有人使用我的擴充套件包到專案裡,我更有動力不斷更新完善。fight!
安裝
通過 composer 安裝,命令如下:
$ composer require vetor/laravel-collect
我們需要執行模型遷移命令,將 Collections
表釋出到我們的資料庫:
$ php artisan migrate
使用
在我們的收藏者表,即 User
表裡需要實現 CollectorContract
介面,並引用 Collector trait
:
use Illuminate\Foundation\Auth\User as Authenticatable;
use Vetor\Laravel\Collect\Collector\Models\Traits\Collector;
use Vetor\Contracts\Collect\Collector\Models\Collector as CollectorContract;
class User extends Authenticatable implements CollectorContract
{
use Collector;
}
如果使用者需要收藏文章,在 Article
表裡實現 CollectableContract
介面並引用 Collectable trait
即可:
use Vetor\Laravel\Collect\Collectable\Models\Traits\Collectable;
use Vetor\Contracts\Collect\Collectable\Models\Collectable as CollectableContract;
class Article extends Model implements CollectableContract
{
use Collectable;
}
可用的方法
對於使用者來說,可用的方法有:
// 收藏
$user->collect($article);
// 取消收藏
$user->cancelCollect($article);
// 使用者的所有收藏記錄
$user->collections;
// 使用者收藏的文章記錄
$user->collectionsWhereCollectable(Article::class);
文章可用的方法有:
// 收藏
$article->collect();
// 取消收藏(預設為當前使用者,可以把使用者例項作為引數傳入)
$article->cancelCollect();
// 獲取文章的收藏情況
$article->collections();
// 獲取文章收藏數
$article->collections_count;
// 根據收藏數排序(升序 'asc';降序 'desc';預設為升序)
Article::orderByCollectionsCount()->get();
我們可以通過下面的方法來獲取收藏表裡所有文章:
Collection::whereCollectable(Article::class)->get();
更多
程式碼參見 Github 倉庫 vetor/laravel-collect,歡迎大家提出自己的想法,指出不足,我們一起學習進步。再次感謝 cybercog/laravel-love 。