Laravel ORM 中你不知道的騷操作

append

    class User extends Model
    {
        protected $appends = ['is_adult'];

        public function getIsAdultAttribute()
        {
            return $this->attribute['age'] > 18;
        }
    }

這個操作大家是不是都用過,在模型裏新增一個數據庫不存在的字段,非常方便。但是 $appends 是全局的,所有的查詢中都會添加 is_adult 這個字段。

    User::select('id', 'name')->first();

像這樣查詢的時候甚至還會報錯提示 age 字段不存在。

我們可以像這樣,在查詢的時候再將 is_adult 添加進查詢結果集中。

    $user = User::first();

    $user->append('is_adult');

你以爲這就完了麼?不僅僅如此,如果我們查詢的是多個用戶怎麼辦,難道自己 for 循環 append 一遍麼?不不不,我們優雅的 Laravel 已經爲我們考慮過了。

    $user = User::paginate(10);

    $user->each->append('is_adult');

query

     User::where('sex', 'girl')->where('age', '<=', 20)->where('money', '>', 1000000000000)->get();

這種查詢語句大家是不是經常寫啊?有沒有發現一個問題?本來找個富蘿莉就挺難得,還沒有提示。

 

Laravel ORM 中你不知道的騷操作

這怎麼能忍,稍稍改寫一下,在最前面加個 query ,輕輕鬆鬆娶富蘿莉走上人生巔峯。

 

Laravel ORM 中你不知道的騷操作

where

富蘿莉沒找到的話,降低點要求正兒八經找個女朋友吧。雖然有點難,但是如果你知道她的 ID,就可以直接使用

    User::query()->find(2);

找到她,簡單快捷。那要是不知道 ID 只知道名字的情況下咋整呢?寫 where 條件?告訴你個更快捷的方法,畢竟找女朋友不能等。

    User::query()->firstWhere(['name' => '喬碧蘿']);

先寫這麼多,發現其他騷操作再更:smirk:

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章