Ich habe eine timesheet
Tabelle und eine user
Tabelle in meiner Datenbank. Die folgende Beziehung wird auf dem Modell timesheet
eingerichtet.Laravel 5.1 laden Beziehungsdaten in ausgewählte Zeile
/**
* The user that owns the timesheet.
*
* @return Object
*/
public function user()
{
return $this->belongsTo('App\Models\User\User');
}
Die oben genannte Mittel I Benutzerdaten erhalten kann, wenn ich Zeiterfassungen aus der Datenbank auswählen, indem Sie mit so etwas wie:
$this->timesheet->whereStatus('Approved')->with('user');
Dadurch wird das Benutzerobjekt im Ergebnis laden und wenn umgewandelt in ein Array wird so aussehen;
0 => array:13 [▼
"id" => 1
"user_id" => 2
"week" => 1
"year" => 2016
"week_ending" => "Sunday 10th January 2016"
"total_hours" => "45.00"
"token" => "0e6796a2dc68066c8d36ff828c519af00657db02b733309b8a4ac0f7b5d6a385"
"status" => "Approved"
"supervisor_id" => 1
"approved_by" => 1
"created_at" => "2016-01-13 15:42:49"
"updated_at" => "2016-01-14 14:52:07"
"user" => array:7 [▼
"id" => 2
"first_name" => "Bill"
"last_name" => "Andrews"
"email" => "[email protected]"
"status" => 1
"created_at" => "2016-01-13 15:38:18"
"updated_at" => "2016-01-14 14:50:03"
]
]
Ich brauche aber nur first_name
und last_name
aus der Benutzertabelle. Gibt es eine Möglichkeit, das Array user
mit dem timesheet
zusammenzufassen/abzuflachen, so dass es stattdessen so aussieht;
0 => array:14 [▼
"id" => 1
"user_id" => 2
"week" => 1
"year" => 2016
"week_ending" => "Sunday 10th January 2016"
"total_hours" => "45.00"
"token" => "0e6796a2dc68066c8d36ff828c519af00657db02b733309b8a4ac0f7b5d6a385"
"status" => "Approved"
"supervisor_id" => 1
"approved_by" => 1
"created_at" => "2016-01-13 15:42:49"
"updated_at" => "2016-01-14 14:52:07"
"first_name" => "Bill"
"last_name" => "Andrews"
]
Ich habe versucht, eifrig laden wie so zu verwenden;
$this->timesheet->with(['user' => function ($query) {
$query->select('first_name', 'last_name');
}])->get()->toArray();
Jedoch führt es in der folgenden Ausgabe;
array:126 [▼
0 => array:13 [▼
"id" => 1
"user_id" => 2
"week" => 1
"year" => 2016
"week_ending" => "Sunday 10th January 2016"
"total_hours" => "45.00"
"token" => "0e6796a2dc68066c8d36ff828c519af00657db02b733309b8a4ac0f7b5d6a385"
"status" => "Approved"
"supervisor_id" => 1
"approved_by" => 1
"created_at" => "2016-01-13 15:42:49"
"updated_at" => "2016-01-14 14:52:07"
"user" => null
]
Danke für Ihre Hilfe, dies ist die Information, die ich suchte. Ich werde in 9 Stunden Kopfgeld geben (es sagt mir, dass ich bis dahin nicht vergeben kann). – V4n1ll4