【发布时间】:2014-01-22 21:46:36
【问题描述】:
我在使用 laravel 4.1 hasWhere 过滤关系时遇到问题。
迭代 1 - 获取所有帖子:完成
$posts = Post::all();
迭代 2 - 获取所有帖子延迟加载 cmets:完成
$posts = Post::with('comments')->get();
迭代 3 - 仅获取带有 cmets 和延迟加载的帖子:完成
$posts = Post::with('comments')->has('comments')->get();
迭代 4 - 仅获取已发布 cmets 和延迟加载的帖子:已损坏
$posts = Post::with('comments')
->whereHas('comments', function($q) {
return $q->where('published', '=', 1);
})
->get();
print_r($posts->toArray()) 的输出显示迭代 3 和 4 的输出完全相同。
我无法根据'comments.published' = 1 的条件过滤关系。
【问题讨论】:
-
我认为问题在于您在查询的 where 方法上调用了
return。只需致电$q->where('published', '=', 1);(没有return声明),您应该会很好。