我试图从一对一的关系中获得价值。我的模型是用户和车辆。一个用户可以拥有多辆车,但一辆车只能有一个用户。我在视图中收到错误:
在我看来,foreach()中的参数无效。
以下是我的语法。任何人都可以帮助我吗?
//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');
}
}
控制器
public function show($id)
{
$vehicles=vehicles::findorfail($id);
return view('Bike.show',compact('vehicles'));
}
查看我试图获取用户价值的位置。
<tr>
<td><b>Contact No:</b></td>
<td>
@foreach($vehicles->users as $users)
{{$users->contact}}
@endforeach
</td>
</tr>
我不知道我做错了什么。它显示错误`为foreach()提供的无效参数。
答案 0 :(得分:2)
foreach()
要求参数为集合或数组。由于车辆属于仅一个用户,$vehicles->users
将不会提供集合。你真的不需要foreach循环。 $vehicle->users->contact
会这样做。
注意:如果一个用户可以拥有多个车辆,则该关系应该是:
return $this->hasMany('App\Vehicle');
还要注意命名约定:模型名称为单数,如果是hasOne关系,则始终使关系成为单数,例如user()
而不是users()
,如果是hasMany则使其复数。