Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在拉拉维尔凝聚_Php_Mysql_Laravel - Fatal编程技术网

Php 在拉拉维尔凝聚

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

是否可以在laravel查询中使用合并

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