【发布时间】:2020-09-28 16:19:27
【问题描述】:
我知道这个问题已被问过很多次,但没有一个解决方案适用于我的问题。 我在处理一对多关系时遇到了问题(一个文件可以有一个状态,但状态可以分配给多个文件),当我尝试这样使用它时,它总是返回 null:
$file = File::orderBy('updated_at', 'DESC')->first();
return $file->status;
当我尝试使用这种关系时:
$file = File::orderBy('updated_at', 'DESC')->with('status')->first();
return $file->status;
我收到一个错误
Call to undefined relationship [status] on model [App\File]
我确定一切设置正确,请参阅下面的模型 文件.php
public function status()
{
return $this->belongsTo('App\Status', 'status_id');
}
“状态”表:
此外,反向关系有效(当我尝试获取特定状态的文件时)
public function files()
{
return $this->hasMany('App\File', 'status_id'); //This works
}
【问题讨论】:
-
把函数状态的名字改成getstatus之类的就不会报错了。永远不要将类名作为函数名,它将成为构造方法。
-
执行这个命令`composer dump-autoload`
-
@A.ANoman 非常感谢。感谢您的建议,我能够找到问题所在。我有一个名为“File_x.php”的备份“File.php”版本,该文件被用作文件模型而不是 File.php,这是一个非常愚蠢的错误,但也许这种情况也可能有助于某人找到他们的问题。跨度>
标签: laravel relationship one-to-many