为foreach()提供的参数无效。 Laravel

时间:2017-01-13 16:35:42

标签: php laravel laravel-5.2 information-retrieval

我试图从一对一的关系中获得价值。我的模型是用户和车辆。一个用户可以拥有多辆车,但一辆车只能有一个用户。我在视图中收到错误:

  

在我看来,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()提供的无效参数。

1 个答案:

答案 0 :(得分:2)

foreach()要求参数为集合或数组。由于车辆属于仅一个用户,$vehicles->users将不会提供集合。你真的不需要foreach循环。 $vehicle->users->contact会这样做。

注意:如果一个用户可以拥有多个车辆,则该关系应该是:

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

还要注意命名约定:模型名称为单数,如果是hasOne关系,则始终使关系成为单数,例如user()而不是users(),如果是hasMany则使其复数。