我对Laravel来说相当新。
我正在尝试使用Laravel的Eloquent查询构建器从我的数据库中提取数据,我可以毫无问题地提取所有数据,但是我想在关系中向第二个表添加一个约束,该约束应该导致no如果数据不正确则返回数据。
然而,当我尝试这个时,我没有返回第二个表数据,但仍然返回初始表数据,在我看来造成了破坏。
这就是我所拥有的:
$accounts = Account::with(array('booking' => function($query)
{
$query->where('status', '=', 'booked');
}))
->get();
我确保在模型中设置关系,但出于某种原因,我得到这样的回复:
["attributes":protected]=>
array(4) {
["booking_id"]=>
int(1)
["account_paid"]=>
int(1)
["created_at"]=>
string(19) "2016-10-22 11:10:49"
["updated_at"]=>
string(19) "2016-10-22 11:10:49"
}
["original":protected]=>
array(4) {
["booking_id"]=>
int(1)
["account_paid"]=>
int(1)
["created_at"]=>
string(19) "2016-10-22 11:10:49"
["updated_at"]=>
string(19) "2016-10-22 11:10:49"
}
["relations":protected]=>
array(1) {
["booking"]=>
NULL
}
如果预设设置为null,那么如果条件为假,我想要的就是什么都不返回。
答案 0 :(得分:2)
这应该适合你:
$accounts = Account::with('booking')
->whereHas(['booking' => function($q)
{
$q->where('status', 'booked');
}])
->get();
答案 1 :(得分:1)
$accounts = Account::with(array('booking' => function($query)
{
$query->where('status', '=', 'booked');
}))
->whereHas(array('booking' => function($query)
{
$query->where('status', '=', 'booked');
}))
->get();
这是替代方式。