Gra*_*avy 5 php orm laravel eloquent
我在使用 laravel 4.1 hasWhere 过滤关系时遇到问题。
迭代 1 - 获取所有帖子:完成
$posts = Post::all();
Run Code Online (Sandbox Code Playgroud)
迭代 2 - 获取所有帖子延迟加载评论:完成
$posts = Post::with('comments')->get();
Run Code Online (Sandbox Code Playgroud)
迭代 3 - 仅获取带有评论和延迟加载的帖子:完成
$posts = Post::with('comments')->has('comments')->get();
Run Code Online (Sandbox Code Playgroud)
迭代 4 - 仅获取已发布评论和延迟加载的帖子:Broken
$posts = Post::with('comments')
->whereHas('comments', function($q) {
return $q->where('published', '=', 1);
})
->get();
Run Code Online (Sandbox Code Playgroud)
输出print_r($posts->toArray())显示迭代 3 和 4 的输出完全相同。我无法根据'comments.published' = 1.
我找到了一个解决方案,但我不确定这是最优雅的解决方案。因此,我将保留这一点以寻求更好的建议。
$posts = Post::
->whereHas('comments', function($q)
{
$q->where('published', '=', 1);
})
->with([
'comments' => function($q)
{
$q->where('published', '=', 1);
},
])->get();
Run Code Online (Sandbox Code Playgroud)
基本上,我的解决方案涉及过滤雄辩的结果,并分别过滤延迟加载。有这个必要吗?有更好的方法来实现这一目标吗?
| 归档时间: |
|
| 查看次数: |
2738 次 |
| 最近记录: |