2017-01-13 3 views
1

Ich versuche, Wert von eins zu eins Beziehung zu erhalten. Meine Modelle sind Benutzer und Fahrzeuge. Ein Benutzer kann mehrere Fahrzeuge haben, aber ein Fahrzeug kann nur einen Benutzer haben. Ich erhalte Fehler in meiner Sicht:Ungültiges Argument für foreach() angegeben. Laravel

ungültiges Argument in foreach() meiner Ansicht nach.

Folgendes ist meine Syntax. Kann mir jemand helfen?

//users: 
class users extends Model 
{ 
    protected $fillable = ['fname','lname','address','contact','shop_name','email','username','password']; 
    public function vehicles() { 
     return $this->hasOne('App\vehicles'); 
    } 
} 

//vehicles: 
class vehicles extends Model 
{ 
    protected $fillable = ['vname','lotno','engine','mileage','kilometers','features','price','negotiable','vcondition','used','manufacture_year','description','Company_cid','Sellers_sid','Vehicle_Type_id'];  
    public function users() { 
     return $this->belongsTo('App\users'); 
    } 
} 

-Controller

public function show($id) 
{ 
    $vehicles=vehicles::findorfail($id); 
    return view('Bike.show',compact('vehicles')); 
} 

anzeigen, wo ich versuche Wert von Benutzer zu erhalten.

<tr> 
<td><b>Contact No:</b></td> 
<td>        
    @foreach($vehicles->users as $users) 
    {{$users->contact}} 
    @endforeach 
</td> 
</tr> 

Ich weiß nicht, wo ich falsch gemacht habe. Es zeigt einen Fehler an. Ungültiges Argument für foreach().

+0

Sind '$ vehicles' erfolgreich eingestellt? In deinem Controller gibst du einfach "Fahrzeuge zurück". Was bekommst du? –

+0

@ Don'tPanic Es gibt alle erforderlichen Werte zurück. – Anon

Antwort

1

foreach() erfordert ein Argument als Sammlung oder Array. Da ein Fahrzeug nur einem Benutzer gehört, gibt $vehicles->users keine Sammlung aus. Sie brauchen dort nicht wirklich eine foreach Schleife. $vehicle->users->contact wird tun.

Hinweis: Wenn ein Anwender mehrere Fahrzeuge haben kann, sollte die Beziehung stattdessen sein:

return $this->hasMany('App\Vehicle'); 

Auch die Namenskonventionen zu beachten: Modellname Singular sein, wenn es hasOne Beziehung immer die Beziehung Singular zB machen ist user() nicht users() und wenn es hasMany macht es Plural.

+0

Es zeigt den Versuch, die Eigenschaft von Nicht-Objekt zu erhalten. – Anon

+0

'dd ($ Fahrzeuge)', um zu sehen, was es –

+0

'Fahrzeuge {# 190 ▼ #fillable gibt: Array: 15 [▶] #connection: null #table: null #primaryKey: "id" #keyType : "int" #perPage: 15 + Inkrementieren: true + Zeitstempel: true #attributes: array: 17 [▶] #original: array: 17 [▶] #relations [] #hidden: [ ] #visible [] #appends [] #guarded: array: 1 [▶] #dates [] #dateFormat: null #casts [] #touches: [] #observables: [] #WITH: [] #morphClass: null + existiert: true + wasRecentlyCreated: false } '' – Anon

Verwandte Themen