Laravel 一对多关系返回 null

Posted

技术标签:

【中文标题】Laravel 一对多关系返回 null【英文标题】:Laravel one-to-many relationship returns null 【发布时间】:2012-11-26 14:26:51 【问题描述】:

这就是我设置的内容。我有两张桌子; userstodos。每个用户可以有多个“待办事项”。

表格如下所示:

用户:

待办事项:

还有模特:

class User extends Eloquent 

    public function todo() 
        $this->has_many('todo');
    

还有……

class Todo extends Eloquent 

    public function user() 
        $this->belongs_to('user');
    

请注意,我已经在数据库中为用户附加了一个“待办事项”。所以,话虽如此,我应该不能做到以下几点:

$user = User::find(1)->todo;

要获取该用户的待办事项?当dd()-ing 它时,我目前正在获取 Null:

array(1) 
  ["todo"]=>
  NULL

那么,有什么想法吗?我尝试从 Todo 的模型中删除 belongs_to(),因为它不应该是必需的,对吧?无论哪种方式都没有区别。我错过了什么吗?

【问题讨论】:

【参考方案1】:

您需要返回关系对象,例如

class User extends Eloquent 

    public function todos() 
        return $this->has_many('Todo');
    

另请注意,返回数组的关系(例如 has_many、has_many_and_belongs_to)通常命名为复数形式,因此“todos”与“todo”相对。

【讨论】:

哇,是的,这很尴尬!谢谢:)

以上是关于Laravel 一对多关系返回 null的主要内容,如果未能解决你的问题,请参考以下文章

laravel 一对多在一侧返回 null

Laravel 一对多(反向)/属于返回 null

Laravel 一对多关系不起作用 - 返回递归

Laravel 5 删除一对多关系

Laravel 5.5中的一对多关系

多态一对多关系为NULL