2016-09-29 4 views
1

Problem Ich möchte Informationen über ein Campagin und alle Zeichen Teil davon erhalten. Ich möchte aber auch die Charakterporträts. Wenn ich das versuche, bekomme ich Informationen und Charaktere, aber keine Porträts.Eloquent: verschachtelte Relation gibt null zurück

Kampagne Modell

public function player_characters() 
{ 
     return $this->hasMany('Sagohamnen\Character\Character', 'campaign_id')->select('id','campaign_id', 'name', 'portrait_id')->where('characters.type', 1)->where('characters.status', 1); 
} 

Charaktermodell

public function thumb_portrait() 
{ 
    return $this->belongsTo('Sagohamnen\Portrait\Portrait')->select('thumbnail', 'id'); 
} 

Die Eloquent Abfrage

return Campaign::select('id', 'genre', 'name', 'description', 
'max_nr_players', 'rating', 'created_at', 'updated_at')->where('id', 
$campaign_id)->with('player_characters.thumb_portrait')->first(); 

Das Ergebnis

string(139) "select `id`, `genre`, `name`, `description`, `max_nr_players`, `rating`, `created_at`, `updated_at` from `campaigns` where `id` = ? limit 1" 
array(1) { 
    [0]=> 
    string(1) "1" 
} 
string(165) "select `id`, `campaign_id`, `name`, `portrait_id` from `characters` where `characters`.`type` = ? and `characters`.`status` = ? and `characters`.`campaign_id` in (?)" 
array(3) { 
    [0]=> 
    int(1) 
    [1]=> 
    int(1) 
    [2]=> 
    int(1) 
} 
string(71) "select `thumbnail`, `id` from `portraits` where `portraits`.`id` in (?)" 
array(1) { 
    [0]=> 
    int(0) 
} 

Character DB-Tabelle

id - name - portrait_id 
1 Gandalf 3 

Portrait DB-Tabelle

id - thumbnail 
3 - http://wwww.... 

Antwort

0

Wenn ich die Beziehung Methode zu ändern "thumb_portrait" auf "Portrait" Die Portraitdaten werden angezeigt. Anscheinend sollte die relation-Methode denselben Namen wie der Fremdschlüssel haben (es sei denn, ich übergebe einen benutzerdefinierten Fremdschlüssel als zweites Argument).

Gemäß der Dokumentation über OneToMany inversen:

Eloquent bestimmt die Standard-Fremdschlüssel Namen durch den Namen der Beziehung Methode untersuchen und die Methodennamen mit _id suffixing.