为什么我的多对一laravel关系不起作用?

为什么我的多对一laravel关系不起作用?,laravel,relationship,one-to-many,Laravel,Relationship,One To Many,我知道这已经被问了很多次了,但没有一个解决方案适用于我的问题。 我在一对多关系中遇到问题(一个文件可以有一个状态,但状态可以分配给多个文件),当我尝试使用它时,它总是返回null,因此: $file = File::orderBy('updated_at', 'DESC')->first(); return $file->status; 当我尝试这样使用关系时: $file = File::orderBy('updated_at', 'DESC')->with('status

我知道这已经被问了很多次了,但没有一个解决方案适用于我的问题。 我在一对多关系中遇到问题(一个文件可以有一个状态,但状态可以分配给多个文件),当我尝试使用它时,它总是返回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]
我确信一切都设置正确,请参见下面的模型 File.php

“文件”表

“状态”表:

此外,反向关系也有效(当我尝试获取特定状态的文件时)

由于类名和函数名相同而导致的错误。当你们做这类函数时,它的工作原理和构造方法类似

public function filestatus()
{
  return $this->belongsTo('App\Status', 'status_id');
}


$file = File::orderBy('updated_at', 'DESC')->with('filestatus')->first();
return $file->status;
由于类名和函数名相同而导致的错误。当你们做这类函数时,它的工作原理和构造方法类似

public function filestatus()
{
  return $this->belongsTo('App\Status', 'status_id');
}


$file = File::orderBy('updated_at', 'DESC')->with('filestatus')->first();
return $file->status;

将函数status的名称更改为getstatus或其他任何名称,您将不会得到错误。永远不要将类名指定为函数名,它将成为构造方法。请执行此命令`composer dump autoload`@A.ANoman非常感谢。多亏了你的建议,我才找到了问题所在。我有一个名为“File_x.php”的备份“File.php”版本,该文件被用作文件模型,而不是File.php,这是一个非常愚蠢的错误,但这种情况可能也有助于查找问题。将函数status的名称更改为getstatus或其他任何名称,您将不会得到错误。永远不要将类名指定为函数名,它将成为构造方法。请执行此命令`composer dump autoload`@A.ANoman非常感谢。多亏了你的建议,我才找到了问题所在。我有一个名为“File_x.php”的备份“File.php”版本,该文件被用作文件模型,而不是File.php,这是一个非常愚蠢的错误,但这种情况可能也有助于找到问题所在。仍然会出现同样的错误,只是使用filestatus而不是status now。。。。调用模型[App\File]上的未定义关系[filestatus]。是否可能laravel希望表“status”被调用为其他名称?仍然会收到相同的错误,只是使用filestatus而不是status now。。。。调用模型[App\File]上的未定义关系[filestatus]。laravel是否希望表“status”被称为其他名称?
Call to undefined relationship [status] on model [App\File] 
public function filestatus()
{
  return $this->belongsTo('App\Status', 'status_id');
}


$file = File::orderBy('updated_at', 'DESC')->with('filestatus')->first();
return $file->status;