class Document extends Model {
....
public function files() {
return $this->hasMany(DocumentFile::class, 'document_id');
}
public function file()
{
return $this->files()->whereSome_condition('some')->first();
}
....
}
这是我的文档模型。它有hasMany files
关系。还有另一种关系' file
'它通过第一关系' files
'。
dd($document->file());
返回该对象,但是,
dd($document->file);
在HasAttributes.php第403行中给出" LogicException:关系方法必须返回一个类型为Illuminate \ Database \ Eloquent \ Relations \ Relation"的对象。异常。
有谁能告诉我为什么$ document->文件在这种情况下不起作用?什么可以解决我的问题。
我不想在我使用这种关系的任何地方写一套额外的()
。
先谢谢。
答案 0 :(得分:0)
您不应该定义第二个关系,正如异常所说,关系方法必须返回Relation的对象。如果要检索相关模型的第一条记录,可以这样做:
dd($document->files->first());
答案 1 :(得分:0)
做到:
public function file() {
return $this->hasOne(DocumentFile::class, 'document_id')->whereSome_condition('some');
}
它的工作方式是:
$document->file