2016-04-06 3 views
1

Ich habe zwei Tabellen, eine für genehmigte Projekte und die andere für Künstlerdetails. Ich möchte Daten von "Projektname" Daten holen, die in der "Projekttabelle" und "Künstlername" ist, die in der "Künstler Tabelle" ist.Das Abrufen von Datensätzen aus der zweiten Tabelle in einer Beziehung ergibt einen Fehler in Laravel 5.2

Ich habe die beiden Beziehungen geschaffen, die

ARTIST MODEL BEZIEHUNG sind

public function approved_relation() 
{ 
    return $this->hasMany('App\approved_projects_model', 'artist_id'); 
} 

GENEHMIGT BEZIEHUNG MODEL

public function artists_relation() 
{ 
    return $this->belongsTo('App\artists_details_model', 'id'); 
} 

In meinem Controller habe ich den folgenden Code

$art_artist_details = approved_projects_model::with('artists_relation')->get(); 


    foreach ($art_artist_details as $artists_relationn) 
    { 
     echo $artists_relationn->category; 

     foreach ($art_artist_details as $artists_relationn){ 

       echo $artists_relationn->artists_relation->phone_no; 
      }    
} 
geschrieben

Das Problem ist, dass die Foreach nur einmal Schleifen, aber es gibt einen Fehler, wenn die zweite Schleife, die nach echo $artists_relationn->artists_relation->phone_no;

erreicht, dass es den folgenden Fehler „Der Versuch, Eigentum von Nicht-Objekt zu erhalten“ gibt Ich habe meine Forschung getan aber es ist wie ich habe eine Sackgasse erreicht. bitte helfen.

Antwort

1

Zunächst einmal brauchen Sie keine zweite Schleife, so ist es genug, um zu verwenden:

$art_artist_details = approved_projects_model::with('artists_relation')->get(); 

foreach ($art_artist_details as $artists_relationn) 
{ 
    echo $artists_relationn->category; 
    echo $artists_relationn->artists_relation->phone_no;      
} 

aber bei Ihrer Beziehung suchen Sie wahrscheinlich falsch Fremdschlüssel.

sollten Sie Beziehung definieren auf diese Weise:

public function artists_relation() 
{ 
    return $this->belongsTo('App\artists_details_model', 'artist_id'); 
} 

Und darüber hinaus sollten Sie sicherstellen, dass Sie immer Datensatz in artists_relation passend - wenn nicht, statt

echo $artists_relationn->artists_relation->phone_no; 

Sie verwenden sollten:

echo $artists_relationn->artists_relation ? $artists_relationn->artists_relation->phone_no : 'none'; 
+0

Vielen Dank Marcin das Problem war der Fremdschlüssel und der Grund, warum mein Code nicht Goo folgt d-Code-Praktiken sind, weil ich mich darauf konzentrierte, den Code zum Laufen zu bringen. aber jetzt funktioniert es danke. –

Verwandte Themen