一个查询中的 Eloquent 模型关系

问题描述

我正在尝试在一个 sql 查询中加载一个具有关系的模型。可能吗?

例如,如果我编写经典的 eloquent 查询

$user = User::find(1);
$user->hobby;

它将运行 2 个 sql 查询一个针对用户,另一个针对爱好。 而 User 模型实例将在 relations 属性中包含爱好数据。 (同样会通过 ->with() 方法发生)

我用一个 sql 查询最接近的是:

$user = User::select(['users.*','hobbies.*'])
   ->join('hobbies','hobbies.id','users.hobbie_id')
   ->find(1);

但问题是爱好的列将在原始属性中,并与用户属性混合而不是关系 属性作为第一个示例。

是否可以做这样的事情,但关系数据将在 relations 属性下?

解决方法

您可以在选择中更改爱好的属性名称

    $user = User::select(['users.*','hobbies.name as hobby_name'])
   ->join('hobbies','hobbies.id','users.hobbie_id')
   ->find(1);

在这里您可以更改关系属性名称

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...