微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 在laravel的COALESCE

是否可以在laravel查询中使用COALESCE.

 $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字段的主项目表上.我将调用主项表:items,并假设它有一个与投票表中的masterItemId字段匹配的itemId字段.在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

我不熟悉Laravel,但是你需要这样的东西,但不要把它当作复制粘贴代码

$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();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐