mysql - 如何在 Laravel 中使用子句进行链接
问题描述
我有一个用户模型,它有很多订单(订单模型),每个订单都属于一个翻译器(翻译器模型)。
我试图达到的行为是当我通过他的 ID 获取用户时,我想获取他的订单以及与每个订单关联的翻译。
我尝试使用此代码:$user = User::where('id', $id->id)->with('orders')->with('translator')->get();
,我希望它会返回正确的数据,应该是这样的:
{
...user data,
orders: [
{
...order_data,
translator: {
...translator_data
}
}
]
}
但这不起作用。无论如何在 Laravel 中有这种行为吗?
解决方案
您可以使用 预先加载嵌套关系.
来区分这一点:
$user = User::where('id', $id->id)->with('orders.translator')->first();
// or
$user = User::with('orders.translator')->find($id->id);
旁注,如果$id
是 User 实例,您可以 Lazy Eager 加载关系:
$id->load('orders.translator');
推荐阅读
- javascript - 如何终止 node.js 中的循环?
- regex - 使用正则表达式清理 url 路径
- php - 使用 echo 将变量插入到 img url
- interceptor - BigBlueButton 校验和绕过?
- python - 返回多个复选框输入的函数未在 Django 中呈现
- asp.net-core - 如何将控制器操作委托给 ASP.NET CORE API 中的另一个类?
- php - PHP Laravel file_put_contents 无法打开流:没有这样的文件或目录错误
- javascript - JS:如何在 event.target 中选择一个孩子?
- sql - 如何获得每个月的总和?
- java - 基于 HashMap 的记忆在 Java 中不起作用