2016-04-25 6 views
1

Ich habe eine Tabelle jobs. Ein Job kann 1 oder mehr Zeilen in jobs_days habenLaravel Join nicht zurückgegeben angegebene Spalte

Ich möchte eine Liste von jobs zurückgeben, die mindestens 1 'Job-Tag' haben. Also ich habe das hier ist meine Jobs Model:

public function days(){ 
    return $this->hasMany('App\JobsDays', 'job_id', 'id'); 
} 

Das funktioniert gut. Allerdings muss ich eine Liste mit Jobs haben, die mindestens einen Jobtag haben, aber diese Liste nach diesem Jobstartdatum sortieren: start2 (Zeitstempel) Spalte. Ich habe versucht mit:

$jobs = Jobs::has('days') 
      ->leftJoin('jobs_days', function ($join) { 
       $join->where('jobs_days.job_id', '=', 'jobs.id'); 
      }) 
      ->select('jobs.id','jobs_days.start2') 
      ->orderBy('jobs_days.start2', 'asc')->paginate(15); 

Das wird nicht mein start2 Datum zurück. Wenn ich on anstelle von where verwende, bekomme ich meine start2 Spalte, aber es gibt jetzt doppelte Jobs zurück.

+0

Sie können Ihre eigene Antwort einreichen und akzeptieren. – aethergy

Antwort

1

Nach vielen Stunden fand ich die Lösung. Mit auf in der Join, fügte ich eine einfache:

Gibt mir verschiedene job.ids. Nicht sicher, warum distinct nicht funktioniert, aber das scheint die Arbeit zu tun

Verwandte Themen