【问题标题】:Updated: Why relationship works when user is Admin, but won`t when Regular user?更新:为什么当用户是管理员时关系有效,但当普通用户时不会?
【发布时间】:2018-07-21 02:53:35
【问题描述】:

我有 3 个模型:用户、角色和货币。我对他们之间的关系感到困惑。

然后用户是管理员这工作:

Auth::user()->currency->symbol)

当普通用户出现错误时:

试图获取非对象的属性

如果 dd(Auth::user()) 它显示用户,但无法访问与模型货币的关系。为什么会这样?

用户模型关系:

    public function currency()
{
    return $this->belongsTo(Currency::class, 'currency_id');
}

货币模型关系:

    public function created_by()
{
    return $this->belongsTo(User::class, 'created_by_id');
}

如果您需要更多信息,请告诉我。

【问题讨论】:

  • 有什么问题?

标签: laravel relationship


【解决方案1】:

用户模型

public function currency()
{
    return $this->belongsTo(Currency::class);
}

货币模型

public function users()
{
    return $this->hasMany(User::class, 'created_by_id');
}

假设您的 User 模型具有属性 currency_id

【讨论】:

  • 错误:试图获取非对象的属性
  • 使用出现该错误的代码更新您的问题
  • 更新了我的问题
  • 将您的error 堆栈跟踪发布到paste.laravel.io,保存并在您的问题中发布链接。 在此之前,请像我的回答一样更新您的货币和用户模型
【解决方案2】:
$this->belongsTo(TABLE, FORIEGN KEY, TABLE KEY);

参考this

用户模型

public function currency()
{
    return $this->belongsTo(Currency::class, 'currency_id', 'id');
}

货币模型

public function users()
{
    return $this->hasMany(User::class, 'created_by_id', 'id');
}

【讨论】:

  • 更新了我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 2018-08-05
  • 2021-09-22
  • 2015-06-30
相关资源
最近更新 更多