我有两个型号。 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();
我不太确定为什么会发生这种情况= \
答案 0 :(得分:1)
我无法从您的帖子中看到与User
的关系是什么,但tenant()
(带括号)可能会返回BelongsTo
或其他Relation
个实例正被分配到$userTenant
。尝试在tenant
之后将该行更改为不带括号的版本,以获取租户模型实例:
$userTenant = $this->user->tenant;
从评论中更新
当您将关系称为方法时,例如
$myModel->relation()
你得到了相应的关系类。用作吸气剂时,例如
$myModel->relation
它与调用
基本相同 $myModel->relation()->get()
用于定位多个模型或调用
$myModel->relation()->first()
用于针对单个模型的关系。