Php 在拉拉维尔凝聚
是否可以在laravel查询中使用合并Php 在拉拉维尔凝聚,php,mysql,laravel,Php,Mysql,Laravel,是否可以在laravel查询中使用合并 $multipleitems = DB::table('votes') ->select('masterItemId',DB::raw('sum(votes) as voteSum')) ->whereBetween('voteDate',array($startDate,$endDate)) ->w
$multipleitems = DB::table('votes')
->select('masterItemId',DB::raw('sum(votes) as voteSum'))
->whereBetween('voteDate',array($startDate,$endDate))
->where($condition)
->groupBy('masterItemId')
->get();
这是我的代码,我想得到每个项目和它的总票数。如果没有投票,我希望得到“0”
但在上面的代码中,它返回至少有1票的项目。
在laravel有什么方法可以做到这一点吗?好吧,OP没有太大帮助,但我会尝试一下!我假设
投票
表包含用户对项目的实际投票。这意味着,如果某个项目未收到任何投票,则该项目id(masterItemId
)不存在于投票表中
这意味着投票表必须与masterItemId
字段上的main items表保持连接。我将调用main items表:items
,并假设它有一个itemId
字段,该字段与投票
表中的masterItemId
字段相匹配。在SQL术语中:
select items.itemId, ifnull(sum(votes.votes),0) as votesSum
from items left join votes on items.itemId=votes.masterItemId
where votes.voteDate between ... and ... and <other conditions>
group by items.itemId
投票表是否包含实际投票或用户可以投票的每个项目的总数?实际上,投票表包含以下字段—“Id、userId、masterItemId、投票、voteDate”。提交的投票包含1或-1。我想得到每个项目的总票数。那么你也想要没有票数的masterItemsId
?投票
表中没有条目的?希望这个答案能对我有所帮助。但我只是想知道在laravel中使用mysql COALESCE是否有任何范围。我在我的另一个查询中多次使用了这个函数。谢谢你的回答。你可以使用COALESCE()而不是ifnull()。
$multipleitems = DB::table('items')
->leftJoin('votes','items.itemId','=','votes.masterItemId')
->select('items.itemId',DB::raw('ifnull(sum(votes.votes),0) as voteSum'))
->whereBetween('votes.voteDate',array($startDate,$endDate))
->where($condition)
->groupBy('items.temId')
->get();