我试图获得"评论"从我的用户来自MX的数据库(例如)所以,我有这个:
Review::with(array('user' => function($query)
{
$query->where('country_code', '=', 'MX');
}))
->with('user.country','pictures')
->where('shop_id',Input::get('id'))
->orderBy('id','DESC'))
->get()
->toArray()
但似乎在哪里(' country_code',' =',' MX')未被考虑在内因为检索所有评论,我只想要用户从MX写的评论。
目标是:只需获得指定国家/地区用户撰写的评论,并进行以下测试:
Review::where('shop_id',Input::get('id'))
->with('user.country','pictures')
->where('users.country_code','MX')
->orderBy('id','DESC'))
->get()
->toArray()
但是效果不好因为说:Unknow列users.country_code在哪里......
答案 0 :(得分:0)
您想要执行基于关系过滤的查询。急切加载约束仅限制主结果集附带的记录。
Review::whereHas('users', function ($q)
{
$q->where('country_code', 'MX');
})
->with('user','pictures')
->where('shop_id',Input::get('id'))
->orderBy('id','DESC'))
->get();
whereHas说...只给我一个有country_code=MX
用户的评论。
<强>参考强>
答案 1 :(得分:0)
如果您想要某个用户或一组用户撰写的评论,您不想使用预先加载。试试这个:
Review::with(array('user', 'pictures'))
->join('users', 'reviews.user_id', '=', 'users.id)
->where('users.country_code', '=', 'MX')
->where('reviews.shop_id', Input::get('id'))
->orderBy('reviews.id', 'DESC'))
->get();