调用未定义的方法Illuminate \ Database \ Query \ Builder :: vehicles()

时间:2017-05-11 11:51:38

标签: php laravel laravel-5.3

我有两个型号。 A" 车辆"和" 租户"。

他们之间有以下关系。

  

租户有很多车辆。车辆属于单一承租人。

对于Tenant.php:

public function vehicles()
{
    return $this->hasMany('\App\Models\Vehicle');
}

对于Vehicle.php:

public function tenant()
{
    return $this->belongsTo('\App\Models\Tenant');
}

执行此操作:

 $this->user = $request->user();
    $userTenant = $this->user->tenant();
    $vehicle= $userTenant->vehicles()->first();

导致错误

Call to undefined method Illuminate\Database\Query\Builder::vehicles()

指向这一行:

$vehicle= $userTenant->vehicles()->first();

我不太确定为什么会发生这种情况= \

1 个答案:

答案 0 :(得分:1)

我无法从您的帖子中看到与User的关系是什么,但tenant()(带括号)可能会返回BelongsTo或其他Relation个实例正被分配到$userTenant。尝试在tenant之后将该行更改为不带括号的版本,以获取租户模型实例:

$userTenant = $this->user->tenant;

从评论中更新

当您将关系称为方法时,例如

$myModel->relation()

你得到了相应的关系类。用作吸气剂时,例如

$myModel->relation

它与调用

基本相同

$myModel->relation()->get()用于定位多个模型或调用

的关系

$myModel->relation()->first()用于针对单个模型的关系。

查看文档以获取有关relationship methods vs. dynamic properties

的更多信息