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();

这种查询语句大家是不是经常写啊?有没有发现一个问题?本来找个富萝莉就挺难得,还没有提示。
这怎么能忍,稍稍改写一下,在最前面加个 query ,轻轻松松娶富萝莉走上人生巅峰。

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

where

富萝莉没找到的话,降低点要求正儿八经找个女朋友吧。虽然有点难,但是如果你知道她的 ID,就可以直接使用

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

找到她,简单快捷。那要是不知道 ID 只知道名字的情况下咋整呢?写 where 条件?告诉你个更快捷的方法,毕竟找女朋友不能等。

User::query()->firstWhere(['name' => '乔碧萝']);

还能再骚一点

User::whereName('乔碧萝')->get();

可是还没有呢?我们只能new一个女朋友了

User::firstOrCreate(['name'=>'乔碧萝']);
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇