2016-01-08 34 views
0

我正在为社交应用程序工作,我需要显示具有标记用户,散列标记的提要,如计数,评论计数,注释和评论的用户详细信息。如何在使用laravel时从关系表中选择计数

饲料有点不同于正常饲料,这里是数据库结构。

用户表:

idusernameemailimage

电影表:(管理员将添加动画,用户将率,通过按标题搜索电影)

idtitleimagedescription

评分表:(这将是一个进料,其a用户已经额定x电影,while rating user will tag to another user,还可以使用一些hash tags

idmovie_iduser_idratingdescription

rating_tag表:(它将持有散列标签ID和评级ID)

idrating_idtag_id

rating_user表:(将举办标记的用户ID和等级ID)

idrating_idtag_id

喜欢表:

idrating_iduser_id

意见表:

idrating_iduser_idcomment

现在我需要显示的所有的东西饲料,评级和所有饲料(谁额定用户图像,动画图像,标题和说明)评论谁曾评论过这些用户的详细信息和总计数。

我有使用,但它没有给我适当的结果。

public function getAllForFeed ($user_ids) { 
    return $this->with(['tags' => function ($q) { 
     $q->select('tags.id'); 
    }])->with(['likes' => function ($q) { 
     $q->select(DB::raw('count(id) as like_count')); 
    }])->with(['comments' => function ($q) { 
     $q->select('user_id', 'comment'); 
    }])->with(['users' => function ($q) { 
     $q->select('users.id'); 
    }])->whereIn('user_id', $user_ids)->get()->toArray(); 
} 

回答

0

我认为这可以通过在每个模型中使用关系并在需要时使用该关系获取数据来完成。

因此,首先找到相关表之间的关系并在每个模型中放置关系。然后尝试使用与模型对象的关系。请尝试使用关系来解决问题,如果您仍然无法弄清楚,请将您的模型与关系和查看代码发布到要显示您的Feed的位置,我会尽力解决。

我想你看看关于eloquent relationship的官方文档。如果还不行,看看。