一个查询中雄辩的模型关系



我试图在一个SQL查询中加载一个关系模型。这可能吗?

例如,如果我写经典的雄辩查询:

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

它将运行2个SQL查询:一个用于User另一个是HobbyUser模型实例将在关系属性中包含爱好数据。(通过->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);

在这里你可以改变关系属性名

相关内容

  • 没有找到相关文章

最新更新