用 with 关联查询一对多的两张表,没法用 select 控制想输出的字段?
客户表和用户表,多对一.
如果只通过select筛选用户表的字段,那一切正常的,如
$res = Customer::with(['user' => function ($query) {
$query->select(['id', 'name', 'status']);
}])->get();
return $res;
{
"customers": [
{
"id": 2,
"company_id": 2,
"name": "xxk1",
"user_id": 2,
"user": {
"id": 2,
"name": "kkk",
"status": 1,
}
},
{
"id": 3,
"company_id": 1,
"name": "xxk21",
"user_id": 1,
"user": {
"id": 1,
"name": "wmk",
"status": 1,
}
}
}
但是如果客户表也只需要输出若干字段,这样写,结果里的user项就会为空,怎么搞?
$res = Customer::with(['user' => function ($query) {
$query->select(['id', 'name', 'status']);
}])->select('id', 'name' )->get();
return $res;
{
"customers": [
{
"id": 2,
"name": "xxk1",
"user": null
},
{
"id": 3,
"name": "xxk21",
"user": null
},
]
}
推荐文章: