Vij*_*ath 5 relationship laravel
列名和关系名可以相同吗?
例子:
我在mack.php 模型中有一个 edit_by 列,我想从用户表中获取 edit_by 中提到的用户的完整详细信息,所以我有如下关系
public function edited_by(){
return $this->hasOne('App\User','id','edited_by');
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试访问$model->edited_by->first_name它会抛出错误“尝试获取非对象的属性”
除了使用不同的名称之外,还有其他方法可以解决吗?
小智 8
最简洁的答案是不。您不能让它们具有相同的名称,因为如果找到该列,则始终会返回该列,并且如果找到具有该名称的列,则永远不会返回该关系。
将列名更改为 user_id 比edited_by 更合适。它更具描述性,也是 Eloquent 将查找的默认 id。类似地,关系名称被命名为user()而不是edited_by()更有意义,因为它返回一个用户模型。
稍长且完全错误的答案是,您可以使用$model->edited_by()->first_name访问关系,但这将导致不必要地运行额外的查询。
归档时间: |
|
查看次数: |
5738 次 |
最近记录: |