次のように、リレーションの条件/制約を使用してモデル ゲームを作成しました。
class Game extends Eloquent {
// many more stuff here
// relation without any constraints ...works fine
public function videos() {
return $this->hasMany('Video');
}
// results in a "problem", se examples below
public function available_videos() {
return $this->hasMany('Video')->where('available','=', 1);
}
}
どういうわけか次のように使用する場合:
$game = Game::with('available_videos')->find(1);
$game->available_videos->count();
ロールは結果のコレクションであるため、すべてが正常に機能します。
私の問題:
熱心な読み込みなしでアクセスしようとすると
$game = Game::find(1);
$game->available_videos->count();
「非オブジェクトでのメンバー関数 count() の呼び出し」というように、例外がスローされます。
使用する
$game = Game::find(1);
$game->load('available_videos');
$game->available_videos->count();
正常に動作しますが、関係内で条件を使用しない場合、関連モデルをロードする必要がないため、かなり複雑に思えます。
私は何かを逃しましたか?熱心な読み込みを使用せずに available_videos にアクセスできるようにするにはどうすればよいですか?
興味のある方のために、この問題をhttp://forums.laravel.io/viewtopic.php?id=10470にも投稿しました。