gpt4 book ai didi

php - Laravel - 自定义数据透视模型中的 belongsTo 关系不起作用

转载 作者:行者123 更新时间:2023-11-29 04:34:36 26 4
gpt4 key购买 nike

Edit:
I dont think its the same issue as:
https://stackoverflow.com/questions/40022929/laravel-relationship-error-undefined-property-illuminate-database-eloquent-col
because in that issue hasMany relationship is used which returns an array but i used belongsTo which should return a certain object.

我有一个数据库结构,其中用户和公司表之间存在多对多关系。为此,我有一个交叉引用表 company_user。此外,每个用户在公司中都有一定的角色,因此交叉引用表也有一个 role_id。问题是,出于某种原因,当我尝试从交叉引用表中检索角色时出现异常。

这是我在公司模型中定义关系的方式:

public function users() {
return $this->belongsToMany('App\User')->withPivot('role_id')->using('App\CompanyUser');
}

现在,如果我只是尝试从 pivot 获取 role_id,一切正常:

@foreach($company->users as $user)
{{$user->pivot->role_id}} // this displays correct role_id
@endforeach

但我还需要角色的数据,所以我在我的自定义数据透视表中定义了一个关系。这是整个模型:

<?php

namespace App;

use Illuminate\Database\Eloquent\Relations\Pivot;

class CompanyUser extends Pivot
{
public function role()
{
return $this->belongsTo('App\Role');
}
}

我试着像这样访问它:

@foreach($company->users as $user)
{{$user->pivot->role()->id}}
@endforeach

但这给了我一个异常(exception):

Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$id 

我错过了什么?

最佳答案

试试改成

@foreach($company->users as $user)
{{$user->pivot->role->id}}
@endforeach

关于php - Laravel - 自定义数据透视模型中的 belongsTo 关系不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46707694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com