Cóż, OP nie był zbyt pomocny, ale dam mu szansę! Zakładam, że votes tabela zawiera rzeczywiste głosy oddane przez użytkowników na elementy. Oznacza to, że jeśli przedmiot nie otrzymał żadnego głosu, to jego identyfikator (masterItemId ) nie istnieje w votes tabela.
Oznacza to, że tabela głosów musi pozostać połączona z główną tabelą elementów na masterItemId pole. Wywołam główną tabelę przedmiotów:items i załóżmy, że ma itemId pole pasujące do masterItemId pole w votes stół. W kategoriach 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
Nie znam Laravela, ale będziesz potrzebować czegoś takiego, jednak nie traktuj tego jako kodu kopiuj-wklej:
$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();