Code前端首页关于Code前端联系我们

Laravel ORM 中你不知道的炫酷操作

terry 2年前 (2023-09-25) 阅读数 47 #后端开发

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

你以为这就结束了吗?不仅如此,如果我们要求更多用户怎么办?我们要再次循环append吗?不,不,我们优雅的 Laravel 已经为我们想到了这一点。

    $user = User::paginate(10);
    $user->each->append('is_adult');

查询

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

您经常写这种类型的查询吗?发现问题了吗?能找到有钱的洛丽塔是相当难得的,所以还没有人问过我。

Laravel ORM 中你不知道的骚操作

我怎么忍心?只要稍微重写一下,在前面加上查询,你就可以轻松娶到有钱的萝莉,走上人生巅峰。

Laravel ORM 中你不知道的骚操作

哪里

如果你找不到有钱的萝莉,请降低你的要求,认真找个女朋友。虽然有点困难,但如果你知道她的ID,就可以用

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

找到她,又快又简单。如果不知道ID只知道名字怎么办?条件写在哪里?让我告诉你一个更快的方法。毕竟,你迫不及待地想找个女朋友。

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

我会先写很多关于这个的内容,稍后当我发现其他很酷的做法时我会更新它。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门