5

私はLaravelでhasMany関係のある雄弁なORMを使用しています。

私が実行すると:

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 に答える