在我的查询中加入4个表。我得到了所有回复,但是三个表格具有相同的字段名称' title'这是不匹配的。那么我怎么能解决这个问题。有没有办法在leftjoin
之前或leftjoin
查询之后过滤我想要的文件。
我的查询如下:
$userPost = Post::with(['product','postattributes' => function ($query) {
$query ->leftjoin('attributes', 'attributes.id', '=', 'post_attributes.attribute_id')
->leftjoin('categories', 'categories.id' , '=', 'attributes.category_id');
}])->whereUserId($user->id)->whereStatus("Active")
->get();
并回复我GT:
"postattributes": [
{
"id": 1,
"attribute_id": 1,
"post_id": 136,
"created_at": "2018-04-27 18:46:28",
"updated_at": "2018-04-27 18:46:28",
"product_id": 1,
"category_id": 1,
"parent_id": null,
"title": "Shape",
"status": "Active",
"sort_order": 1
},
{
"id": 1,
"attribute_id": 2,
"post_id": 136,
"created_at": "2018-04-27 18:46:28",
"updated_at": "2018-04-27 18:46:28",
"product_id": 1,
"category_id": 1,
"parent_id": null,
"title": "Shape",
"status": "Active",
"sort_order": 1
}
]
现在我想在title as category_title
表上使用categories
。
我怎么能这样做?
答案 0 :(得分:0)
您可以使用select
:
$userPost = Post::with(['product','postattributes' => function ($query) {
$query->select('categories.id', 'attribute_id','post_id', 'created_at', 'updated_at','product_id','category_id', 'parent_id', 'categoris.title as category_title', 'status', 'sort_order')
->leftjoin('attributes', 'attributes.id', '=', 'post_attributes.attribute_id')
->leftjoin('categories', 'categories.id' , '=', 'attributes.category_id');
}])->whereUserId($user->id)->whereStatus("Active")
->get();
在select
中,您可以设置所需的所有字段,在此示例中,我从列表中添加了所有字段。