Zum Beispiel hier die Tabellenstruktur.Laravel: Wie bekomme ich ausgewählte Spalten von Base Table mit Eager Loading?
User
-----
-id
-role_id
-fname
-lname
-country_code
-mobile
-password
-remember_token
-email
-address
-location_id
und eine andere Tabelle
Role
-----
-id
-name
Nun, wenn ich alle Benutzerinformationen aus Benutzertabelle wollen mit Rollen Tabelle wie folgt ich schreiben.
$ user = Benutzer :: mit ('Rolle') -> wo ('users.id', $ id) -> first() -> toArray();
Aber es wird alle Daten aus der Benutzertabelle abrufen. Was ich brauche, sind ausgewählte Spalten der Benutzertabelle mit eifrigem Laden. Nur für fname, lname, mobile, E-Mail aus der Benutzertabelle und role_name aus der Rollentabelle.
Ich weiß, wie bestimmte Spalten der zugehörigen Tabelle wie folgt auswählen.
public function Role(){
return $this->belongsTo('App\Role')->select('id','name as role_name');
}
Aber wie bestimmte Spalten der Benutzertabelle mit() zu wählen?
Es kann roles.name nicht finden. SQLSTATE [42S22]: Spalte nicht gefunden: 1054 Unbekannte Spalte 'roles.name' in 'Feldliste' (SQL: wähle 'Benutzer'.' Name', 'Benutzer'.Name},' Benutzer'.mobile' , 'user'.email',' roles' .name' als 'role_name' von' users', wo 'users'.id' = 4 und' users'.deleted_at' ist Null-Limit 1) –
könnten Sie show generated query von $ user = User :: mit ('Role') -> where ('users.id', $ id) -> first() -> toArray(); (Zu diesem Zweck verwenden Sie vor Abfrageaufrufanweisung DB :: enableQueryLog();, und zeigen Sie es nach dd (DB :: getQueryLog());). Darf Laravel tun 'mit' mit zwei SQL-Abfragen ... (?) –
Es nicht verwendet gehört zu Beziehung im Modell definiert. Hier ist das Abfrageprotokoll. "wählen Sie' user'.name', 'user''lname',' user'.mobile', 'user''email',' roles'.name' als 'role_name' von' users 'where' user'.id' =? und 'users'.deleted_at' ist null" –