5

我在 Laravel 中使用雄辩的 ORM 与hasMany关系。

当我运行时:

Level::find(1)->lessons()->get();

它工作正常,但是当我像这样使用动态属性时:

Level::find(1)->lessons

它只返回结果level而不是lessons.

我需要在某个地方进行其他设置吗?

编辑:这里是模型:

class Level extends Eloquent {

    protected $table = 'levels';

    public function lessons()
    {
        return $this->hasMany('Lesson');
    }
}

class Lesson extends Eloquent {

    protected $table = 'lessons';

    public function level()
    {
        return $this->belongsTo('Level');
    }
}
4

2 回答 2

8

我只是遇到了同样的问题,结果我在表上有一个与我设置的关系同名的列。

确保模型中没有与您尝试加载的关系方法同名的列。

编辑:我还注意到 laravel 在关系名称中存在取消标记 (_) 的问题,所以不要在方法名中添加 _ ,否则它将不起作用。

于 2014-11-12T16:29:40.550 回答
2

您需要急切地加载关系。

Level::with('lessons')->find(1)->lessons;应该管用。

如果您想每次都加载此关系,则应将此行添加到Level模型中。

protected $with = array('lessons');

于 2013-11-12T21:25:33.483 回答