use*_*996 5 constraints eager-loading eloquent laravel-4
如果评论user_id = $ id,我希望获得所有项目(主题)及其评论.我尝试这样的东西,但它不起作用.因此,如果Item没有得到user_id = $ id的任何评论,那么我不需要这个项目.
在DiscussionsItem模型中我有方法:
public function discussionsComments() {
return $this->hasMany('DiscussionsComment', 'discussionsitem_id');
}
Run Code Online (Sandbox Code Playgroud)
我在控制器中的查询是这样的:
$items = DiscussionsItem::whereBrandId($brand_id)
->whereBrandCountryId($country_id)
->with(['discussionsComments' => function($query) use ($id) {
$query->where('user_id', '=', $id);
}])
->whereHas('discussionsComments', function($query) use ($id) {
$query->where('user_id', '=', $id);
})
->with(['views' => function($query) use ($id) {
$query->where('user_id', $id)->count();
}])
->orderBy('created_at', 'DESC')->get();
Run Code Online (Sandbox Code Playgroud)
我的问题是我得到了带注释的项目,其中注释为user_id!= $ id.
PS我需要5条评论,但我无法想象如何做到这一点,因为 - >在我急切的负载中采取(5)是行不通的.
我搞清楚了(工作代码):
$items = DiscussionsItem::whereBrandId($brand_id)
->whereBrandCountryId($country_id)
->whereHas('discussionsComments', function($query) use ($id) {
$query->where('user_id', '=', $id);
})
->with(['views' => function($query) use ($id) {
$query->where('user_id', $id)->count();
}])
->orderBy('created_at', 'DESC')->get();
$items->each(function($topic) use ($id, 5){
$topic->comments = $topic->discussionsComments()->where('user_id', '=', $id)->get()->take(5);
});
Run Code Online (Sandbox Code Playgroud)
Rob*_*ert -1
您可以执行自定义范围,或者仅限制您的关系返回的金额:
public function discussionsComments() {
return $this->hasMany('DiscussionsComment', 'discussionsitem_id')
->latest()
->take(5);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |