根据Laravel 5文档,
Eloquent会自动确定正确的外键列 评论模型。按照惯例,Eloquent将采取“蛇案” 拥有模型的名称,并以_id为后缀。所以,对于这个例子, Eloquent将假设Comment模型上的外键是post_id。
然而,事实并非如此,因为如果有人:
// Class: Video
public function author()
{
return $this->belongsTo('App\User');
}
然后调用$ video-> author将无效,因为Laravel将假定外键为author_id而不是user_id。
我错过了什么或这确实是文档错误吗?
答案 0 :(得分:1)
您要发布hasMany
的文档,而不是belongsTo
。
对于belongsTo
,它会在视频中查找user_id
,并在用户模型上与id
进行匹配。对于hasMany
,它会在视频中查找id
并将其与用户中的video_id
进行匹配,这在这种情况下毫无意义。
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方法
正如我在原始答案中所说,您正在查看文档中不正确的部分。