我试图在一个SQL查询中加载一个关系模型。这可能吗?
例如,如果我写经典的雄辩查询:
$user = User::find(1);
$user->hobby;
它将运行2个SQL查询:一个用于User另一个是Hobby.User模型实例将在关系属性中包含爱好数据。(通过->with()方法同样会发生)
最接近的我得到这样做一个单一的SQL查询是:
$user = User::select(['users.*', 'hobbies.*'])
->join('hobbies', 'hobbies.id', 'users.hobbie_id')
->find(1);
但是问题是Hobby的列将在original属性中与User混合属性而不是关系属性作为第一个例子。
是否可以这样做,但关系数据将在关系属性下?
您可以在select
中更改爱好的属性名称$user = User::select(['users.*', 'hobbies.name as hobby_name'])
->join('hobbies', 'hobbies.id', 'users.hobbie_id')
->find(1);
在这里你可以改变关系属性名