Tôi tạo ra một mô hình trò chơi sử dụng một điều kiện/hạn chế cho một mối quan hệ như sau:Cách truy cập mô hình hasMany Relation với điều kiện ở đâu?
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);
}
}
Khi sử dụng nó bằng cách nào đó như thế này:
$game = Game::with('available_videos')->find(1);
$game->available_videos->count();
tất cả mọi thứ hoạt động tốt, như vai trò là kết quả bộ sưu tập.
vấn đề của tôi:
khi tôi cố gắng truy cập vào nó mà không bốc háo hức
$game = Game::find(1);
$game->available_videos->count();
một ngoại lệ được ném như nó nói "Gọi đến một số chức năng thành viên() trên một phi đối tượng ".
Sử dụng
$game = Game::find(1);
$game->load('available_videos');
$game->available_videos->count();
hoạt động tốt, nhưng nó có vẻ khá phức tạp đối với tôi, như tôi không cần phải tải mô hình liên quan, nếu tôi không sử dụng điều kiện trong mối quan hệ của tôi.
Tôi đã bỏ lỡ điều gì chưa? Làm thế nào tôi có thể đảm bảo rằng, có thể truy cập vào available_videos mà không cần sử dụng tải háo hức?
Đối với bất cứ ai quan tâm, tôi cũng đăng tải vấn đề này trên http://forums.laravel.io/viewtopic.php?id=10470
Cách tốt nhất để triển khai quản lý người dùng dựa trên vai trò trong laravel là sử dụng gói sentry. Hãy thử một lần đi. – harishannam
Như tôi đã nói trong mô tả ở trên, các tên Mẫu chỉ là một ví dụ, vấn đề của tôi không liên quan gì đến quản lý người dùng. Tôi sẽ chỉnh sửa câu hỏi của mình và đăng ví dụ wordl thực sự của mình. – Remluben