不知道我的头衔是否适合我的情况,但是...
在我的Laravel项目中,我试图显示一个包含属于该图像的所有评论的图像。每条评论都有赞。当我尝试快速加载它时,我仍然会得到一个针对每个评论的查询,为该评论获取点赞。有没有一种方法可以让我为每个正在被热切加载的评论加载点赞?
这是我的模型
媒体模型
class Media extends Eloquent {
public function comments()
{
return $this->hasMany('Comment');
}
}评论模型
class Comment extends Eloquent {
public function media()
{
return $this->belongsTo('Media');
}
public function likes()
{
return $this->hasMany('Like');
}
}Like模型
class Like extends Eloquent {
public function comment()
{
return $this->belongsTo('Comment');
}
}我的控制器
public function imageViewer($id)
{
$images = Media::with(['comments', 'comments.likes'])->where('resource_id', $id)->simplePaginate(1);
return View::make('image-viewer', compact('images'));
}我知道,如果我想要立即加载图片的评论,我可以这样做:Media::with('comments')->get();
但我不确定我如何才能热切加载那些属于我刚刚热切加载的媒体评论的点赞?
发布于 2015-03-30 17:36:31
你可以简单地做到这一点。
$medias = Media::with(['comments' => function($query) {
$query->with('likes');
}])->where('resource_id', $id)->simplePaginate(1);你还可以检索每条评论的点赞。
foreach($medias as $media)
{
echo $media->name; // column
foreach($media->comments as $comment)
{
echo $comment->likes()->count();
}
}https://stackoverflow.com/questions/29336377
复制相似问题