问题描述
我正在尝试在一个 sql 查询中加载一个具有关系的模型。可能吗?
例如,如果我编写经典的 eloquent 查询:
$user = User::find(1);
$user->hobby;
它将运行 2 个 sql 查询:一个针对用户,另一个针对爱好。 而 User 模型实例将在 relations 属性中包含爱好数据。 (同样会通过 ->with() 方法发生)
$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);
在这里您可以更改关系属性名称