如何在Laravel 5中为这种关系创建模型?

如何在Laravel 5中为这种关系创建模型?,laravel,model,laravel-5,laravel-5.1,Laravel,Model,Laravel 5,Laravel 5.1,我有以下模式: Modules ======= id: PK current_revision: FK to Revisions.Id, nullable Revisions ========= id: PK current\u revision字段引用单个修订id或设置为null 我的问题是,我如何在Laravel中正确地模拟这种关系 到目前为止,我是这样做的: class Module extends Model { public function current_revisio

我有以下模式:

Modules
=======
id: PK
current_revision: FK to Revisions.Id, nullable

Revisions
=========
id: PK
current\u revision
字段引用单个修订id或设置为null

我的问题是,我如何在Laravel中正确地模拟这种关系

到目前为止,我是这样做的:

class Module extends Model
{
    public function current_revision()
    {
        return $this->belongsTo(Revision::class, 'current_revision');
    }

}
但是,我在
修订版
模型中没有做相反的操作,因为可能存在没有分配
模块
的修订版

这是建立这种关系模型的正确方法吗

另外,为什么下面的
$module->current_revision
没有输出修订集?相反,它输出字段的内容


但是值得一提的是,以下几点效果很好:
$module->current\u revision()->getResults()
关于您当前的关系:

由于当前修订只指向修订表上的一条记录,因此您可以期望您的关系返回单个修订模型,而不是集合

获取字段内容而不是模型的原因是字段和关系共享相同的名称。因此,当您请求
$model->current_revision
时,Laravel会给出数据库中该字段的值

解决此问题的最简单方法是重命名数据库列或关系名称。我通常将_id附加到外键列,这样就不会有问题了

关于反向关系:


您可以用相同的方法定义关系,即使列可以为null。如果没有任何模块与一个修订版相关,
$revision->module
(例如)将返回null。

非常感谢。出于某种原因,我认为Laravel读取方法名称或其他内容。谢谢你消除了困惑!