我可以将列名和关系名称相同吗?
示例:
我在 mack.php 模型中有一个edit_by列,我想从用户表中获取edit_by中提到的用户的完整详细信息,所以我有如下关系
public function edited_by(){
return $this->hasOne('App\User','id','edited_by');
}
现在,如果我尝试访问 $ model-> edited_by-> first_name ,则抛出错误'试图获取非对象的属性'
除了有不同的名字之外,还有什么方法可以修复它吗?答案 0 :(得分:2)
答案简短。您不能使它们具有相同的名称,因为如果找到该列将始终返回该列,并且如果找到具有该名称的列,则永远不会返回该关系。
将列名更改为user_id比edit_by更合适。它更具描述性,也是Eloquent寻找的默认ID。类似地,关系名称更有意义地命名为 user()而不是 edited_by(),因为它返回用户模型。
稍长且完全不正确的答案是您可以使用 $ model-> edited_by() - > first_name 访问该关系,这将导致额外的查询被不必要地运行。 / p>