更新:为啥当用户是管理员时关系有效,但当普通用户时不会?
Posted
技术标签:
【中文标题】更新:为啥当用户是管理员时关系有效,但当普通用户时不会?【英文标题】: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');
如果您需要更多信息,请告诉我。
【问题讨论】:
有什么问题? 【参考方案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');
【讨论】:
更新了我的问题以上是关于更新:为啥当用户是管理员时关系有效,但当普通用户时不会?的主要内容,如果未能解决你的问题,请参考以下文章
linux 从普通用户切换为管理员时用 su 命令为啥提示输入密码,按啥键光标都没反应。
为啥当应用转移到新的应用商店帐户时,所有用户都没有显示更新?