/ / Laravel 4 join sinistro dove qualcosa è uguale O ritorno zeri - laravel, join, laravel-4, eloquent, left-join

Laravel 4 si unisce a sinistra dove qualcosa è uguale O ritorno zeri - laravel, join, laravel-4, eloquente, left-join

ho bisogno di unire due tavoli mentre sommando e contando il secondo tavolo. Quello che ho fatto, ma solo quando le righe esistono nella seconda tabella.

Se non c'è nulla lì, mi piacerebbe che il join restituisse zero, piuttosto che interrompere la visualizzazione dell'intera riga.

"Sono sicuro di aver bisogno di lasciare il join sia su uid = uid AND gid = gid, ma non sono sicuro di come ??

Ecco il mio lavoro, ma filtrando troppo codice:

$result = Users_team::where("users_teams.gid", "=", $gid)
->leftjoin("events_users", "users_teams.uid", "=", "events_users.uid")
->where("events_users.gid", "=", $gid)
->groupBy("users_teams.uid")
->addSelect( array(
"*",
DB::raw("count(*) as apps"),
DB::raw( "SUM(goals) AS goals" ),
DB::raw( "SUM(assists) AS assists" ),
DB::raw( "SUM(award) AS awards" ),
));

risposte:

0 per risposta № 1

Quindi la risposta non è fare un "dove" separato all'interno del join sinistro, che annulla effettivamente la parte "sinistra" di esso.

Invece il join dovrebbe essere fatto in due condizioni, mostrate di seguito.

$result = Users_team::where("users_teams.gid", "=", $gid)
->leftJoin("events_users", function($join)
{
$join->on("users_teams.uid", "=", "events_users.uid")
->on("events_users.gid", "=", "users_teams.gid");
})
->groupBy("users_teams.uid")
->addSelect( array(
"*",
DB::raw("count(*) as apps"),
DB::raw( "SUM(goals) AS goals" ),
DB::raw( "SUM(assists) AS assists" ),
DB::raw( "SUM(award) AS awards" ),
));