0

根据 Laravel 5 文档,

Eloquent 将自动确定 Comment 模型上正确的外键列。按照惯例,Eloquent 将采用拥有模型的“蛇形”名称并以 _id 为后缀。所以,对于这个例子,Eloquent 会假设 Comment 模型的外键是 post_id。

然而,实际情况并非如此,因为如果有:

// Class: Video
public function author()
{
    return $this->belongsTo('App\User');
}

然后调用 $video->author 将不起作用,因为 Laravel 将假定外键是 author_id 而不是 user_id。

我是否遗漏了什么或者这确实是一个文档错误?

4

1 回答 1

1

您发布的文档是hasMany,而不是belongsTo

因为belongsTo它将user_id在 Video 中查找并将其与idUser 模型匹配。因为hasMany它会查找idin Video 并将其与video_idin User 匹配,在这种情况下这没有任何意义。

belongsTo是 的倒置版本hasMany

编辑:是的。对不起,你似乎是对的。当我将关系函数的名称更改为user而不是author它时。

轻松绕过它的唯一方法是user_id作为外键传递。

// Video
public function author()
{
    return $this->belongsTo('App\User', 'user_id');
}

但是,文档belongsTo 确实声明(您已发布hasMany):

Eloquent 通过检查关系方法的名称并在方法名称后面加上 _id 来确定默认的外键名称。但是,如果 Phone 模型上的外键不是 user_id,您可以将自定义键名称作为第二个参数传递给 belongsTo 方法

正如我在原始答案中所说,您正在查看文档的不正确部分。

于 2015-07-03T15:34:33.373 回答