在急切加载时别名 Eloquent 关系

打人兵

有没有办法在急切加载时为 Eloquent 关系设置别名?例如,我可能有如下查询。

User::with(['roles' => function ($query) { $query->where('type', ADMIN); }]);

但是,如果我还想急切加载状态为 ACTIVE 的角色怎么办?我能想到的唯一方法是复制 User 模型上的角色关系并给它一个不同的名称。查询将类似于以下内容。

User::with([
  'roles' => function ($query) { $query->where('type', ADMIN); },
  'otherRoles' => function ($query) { $query->where('status', ACTIVE) }]
);

我可以在我的用户模型上使用诸如adminRoles和 之类的方法activeRoles,但这真的不是我想要的,因为有很多可能的参数。

德怀特

你已经表明你不想在你的用户模型上有额外的方法,但这是除了像你一样使用闭包之外的最好的方法。您可以通过使用新方法(例如adminRoles利用现有关系方法和相关模型提供的范围)来稍微改进代码

class User extends Eloquent 
{
    public function roles()
    {
        return $this->hasMany(Role::class);
    }

    public function adminRoles()
    {
        return $this->roles()->admin();
    }
}

然后定义要在Role模型上使用的范围

class Role extends Eloquent
{
    public function scopeAdmin($query)
    {
        $query->where('type', static::ADMIN);
    }
}

您现在可以预先加载这些作用域关系。

User::with('adminRoles')->get();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel Eloquent:渴望加载多个嵌套关系

来自分类Dev

使用with方法Eloquent添加表别名检索关系

来自分类Dev

使用with方法Eloquent添加表别名检索关系

来自分类Dev

laravel eloquent orm - 在急切加载查询中限制列?

来自分类Dev

Laravel 5.4 急切加载belongsToMany 关系空绑定

来自分类Dev

Laravel 雄辩的关系数据(急切加载)

来自分类Dev

Laravel 急切加载 BelongsTo 关系不起作用

来自分类Dev

如何使用Eloquent从嵌套关系中加载特定字段?

来自分类Dev

laravel eloquent-在嵌套的渴望加载关系上不使用

来自分类Dev

Eloquent / Laravel:嵌套的延迟渴望加载,但返回多个模型的关系

来自分类Dev

Laravel Eloquent 关系

来自分类Dev

Laravel eloquent 模型关系

来自分类Dev

Lumen Eloquent 关系

来自分类Dev

关系满足Laravel Eloquent条件时如何获取产品

来自分类Dev

在Laravel Eloquent中查询关系内的关系

来自分类Dev

如何合并多个 Eloquent 关系?

来自分类Dev

eloquent:查询多对多关系

来自分类Dev

Eloquent Model 父子关系

来自分类Dev

Laravel Eloquent 模型之间的关系

来自分类Dev

Laravel 3 表 Eloquent:关系

来自分类Dev

Laravel Eloquent 连接表关系

来自分类Dev

覆盖 Eloquent 关系创建方法

来自分类Dev

Laravel Eloquent "with" 返回与 limit 的关系

来自分类Dev

获得 Laravel eloquent 模型关系

来自分类Dev

覆盖 eloquent 关系结果数据

来自分类Dev

当使用与主键不同的列(referencedColumnName)映射关系时,如何阻止 Hibernate 急切地获取关系?

来自分类Dev

渴望在Laravel和Eloquent中加载渴望加载到模型中的关系(受保护的$ with)

来自分类Dev

将急切加载添加到自定义has_many关系中

来自分类Dev

SQLAlchemy 急切/加入加载自引用一对一关系

Related 相关文章

  1. 1

    Laravel Eloquent:渴望加载多个嵌套关系

  2. 2

    使用with方法Eloquent添加表别名检索关系

  3. 3

    使用with方法Eloquent添加表别名检索关系

  4. 4

    laravel eloquent orm - 在急切加载查询中限制列?

  5. 5

    Laravel 5.4 急切加载belongsToMany 关系空绑定

  6. 6

    Laravel 雄辩的关系数据(急切加载)

  7. 7

    Laravel 急切加载 BelongsTo 关系不起作用

  8. 8

    如何使用Eloquent从嵌套关系中加载特定字段?

  9. 9

    laravel eloquent-在嵌套的渴望加载关系上不使用

  10. 10

    Eloquent / Laravel:嵌套的延迟渴望加载,但返回多个模型的关系

  11. 11

    Laravel Eloquent 关系

  12. 12

    Laravel eloquent 模型关系

  13. 13

    Lumen Eloquent 关系

  14. 14

    关系满足Laravel Eloquent条件时如何获取产品

  15. 15

    在Laravel Eloquent中查询关系内的关系

  16. 16

    如何合并多个 Eloquent 关系?

  17. 17

    eloquent:查询多对多关系

  18. 18

    Eloquent Model 父子关系

  19. 19

    Laravel Eloquent 模型之间的关系

  20. 20

    Laravel 3 表 Eloquent:关系

  21. 21

    Laravel Eloquent 连接表关系

  22. 22

    覆盖 Eloquent 关系创建方法

  23. 23

    Laravel Eloquent "with" 返回与 limit 的关系

  24. 24

    获得 Laravel eloquent 模型关系

  25. 25

    覆盖 eloquent 关系结果数据

  26. 26

    当使用与主键不同的列(referencedColumnName)映射关系时,如何阻止 Hibernate 急切地获取关系?

  27. 27

    渴望在Laravel和Eloquent中加载渴望加载到模型中的关系(受保护的$ with)

  28. 28

    将急切加载添加到自定义has_many关系中

  29. 29

    SQLAlchemy 急切/加入加载自引用一对一关系

热门标签

归档