Laravel 使用 join 获取数据 return null
Laravel use join to fetch data return null
在下面这个获取数据的结果中:
{
"purchases": [
{
"id": 1,
"member_id": 1,
"mediator_id": 2,
"type": null,
"cash": 38712402,
"created_at": "2017-11-08 06:40:45",
"updated_at": "2017-11-08 06:40:45",
"deleted_at": null,
"cheques": [
{
"id": 1,
"purchase_id": 1,
"expire_date": "1396-01-19",
"amount": 97094060,
"isRejected": 0,
"created_at": "2017-11-08 06:40:45",
"updated_at": "2017-11-08 06:40:45",
"deleted_at": null
}
]
},
{
"id": 2,
"member_id": 1,
"mediator_id": 2,
"type": null,
"cash": 46760191,
"created_at": "2017-11-08 06:40:45",
"updated_at": "2017-11-08 06:40:45",
"deleted_at": null,
"cheques": []
}
]
}
我通过这段代码得到的:
$purchases = \App\Purchase::with('cheques')->where('member_id',
$request->userId)->get();
我正在尝试从 cheques
获取 amount
并从 purchases
获取 'cash','created_at'
,其中 'member_id'=$request->userId
,但我得到空 cheques
当我使用此代码时:
$purchases = \App\Purchase::with(array('cheques'=>function($query){
$query->select('amount');
}))->where('member_id',$request->userId)->get(['cash','created_at']);
尝试文档中的 Eager Loading Specific Columns
部分 - https://laravel.com/docs/5.5/eloquent-relationships
它说:
When using this feature, you should always include the id column in the list of columns you wish to retrieve.
$purchases = \App\Purchase::with(
array('cheques' => function($query){
$query->select('amount');
})
)->where('member_id',$request->userId)
->select('cash','created_at')->get();
如果要select列使用get方法采集,需要传递id:
->get(['id', 'cash', 'created_at']);
或者您可以使用 ->select('cash', 'created_at')->get();
你喜欢哪个。
你能试试这个吗?
$purchases = \App\Purchase::with(array('cheques'=>function($query){
$query->select('id', 'amount', 'purchase_id');
}))->where('member_id',$request->userId)->get(['cash','created_at']);
在下面这个获取数据的结果中:
{
"purchases": [
{
"id": 1,
"member_id": 1,
"mediator_id": 2,
"type": null,
"cash": 38712402,
"created_at": "2017-11-08 06:40:45",
"updated_at": "2017-11-08 06:40:45",
"deleted_at": null,
"cheques": [
{
"id": 1,
"purchase_id": 1,
"expire_date": "1396-01-19",
"amount": 97094060,
"isRejected": 0,
"created_at": "2017-11-08 06:40:45",
"updated_at": "2017-11-08 06:40:45",
"deleted_at": null
}
]
},
{
"id": 2,
"member_id": 1,
"mediator_id": 2,
"type": null,
"cash": 46760191,
"created_at": "2017-11-08 06:40:45",
"updated_at": "2017-11-08 06:40:45",
"deleted_at": null,
"cheques": []
}
]
}
我通过这段代码得到的:
$purchases = \App\Purchase::with('cheques')->where('member_id',
$request->userId)->get();
我正在尝试从 cheques
获取 amount
并从 purchases
获取 'cash','created_at'
,其中 'member_id'=$request->userId
,但我得到空 cheques
当我使用此代码时:
$purchases = \App\Purchase::with(array('cheques'=>function($query){
$query->select('amount');
}))->where('member_id',$request->userId)->get(['cash','created_at']);
尝试文档中的 Eager Loading Specific Columns
部分 - https://laravel.com/docs/5.5/eloquent-relationships
它说:
When using this feature, you should always include the id column in the list of columns you wish to retrieve.
$purchases = \App\Purchase::with(
array('cheques' => function($query){
$query->select('amount');
})
)->where('member_id',$request->userId)
->select('cash','created_at')->get();
如果要select列使用get方法采集,需要传递id:
->get(['id', 'cash', 'created_at']);
或者您可以使用 ->select('cash', 'created_at')->get();
你喜欢哪个。
你能试试这个吗?
$purchases = \App\Purchase::with(array('cheques'=>function($query){
$query->select('id', 'amount', 'purchase_id');
}))->where('member_id',$request->userId)->get(['cash','created_at']);