2016-12-13 7 views
0

Ich erstelle eine Website, wo Aufträge an Mitarbeiter vergeben werden. Ich weise die neuen Aufträge den Mitarbeitern zu, die die niedrigste Anzahl an zugewiesenen Aufträgen haben.Laravel Wählen Sie den kleinsten Wert

Mein aktueller Code, Mitarbeiter zu finden:

$employees=User::whereHas('employee', function ($q) use ($company) { 
     $q->where('company_id', $company->id); 
    })->get(); 
    $min='999'; 
    foreach ($employees as $employee) 
    { 
     if(Order::where('assigned_to_employee',$employee->id)->count()<$min) 
     { 
      $assign_id=$employee->id; 
      $min=Order::where('assigned_to_employee',$employee->id)->count(); 
     } 
    } 

Ich fühle mich wie es ein besserer Weg, dies zu tun, so Empfehlungen sind willkommen. Auch wenn meine Art, es zu tun, gut ist, wie ordne ich $ min einen maximalen int-Wert zu?

Dank

Antwort

0

Ich bin nicht sicher, ob ich völlig verstehen, aber ich denke, Sie aus der folgenden profitieren würden, wenn Sie Laravel 5.3 verwenden. Sie sollten in der Lage sein, eine Kombination aus withCount und orderBy zu verwenden, um eine Liste der Mitarbeiter mit der niedrigsten Anzahl an Bestellungen zu erhalten.

User::withCount('employee')->orderBy('employee_count', 'asc')->first(); 
+0

Danke, das Problem ist, dass Bestellung an Mitarbeiter in der Bestellungstabelle nicht in der Mitarbeiter Tabelle gespeichert ist. – user3844579

Verwandte Themen