我有很多关系:
users (id)
user_game (user_id, game_id)
games (id, title)
我想检查游戏是否与特定用户相关联:
$user = User::find(1);
$game = Game::where('title', 'pacman');
$gameUsers = $game->users()
$gameHasUser = >>> $gameUsers contains $user <<< // How can I do this?
答案 0 :(得分:4)
对于多对多,您可以使用contains()
方法:
$game = Game::where('title', 'pacman')->first();
if ($game->users->contains($userId)) {
// Do something.
}
答案 1 :(得分:0)
您可以使用->user()
,因此您的代码将变为:
$gameHasUser = $gameUsers->find(1)->user()
find(1)
只是一个例子。您还可以查看Eloquent Loading Relationships Laravel Doc。
答案 2 :(得分:0)
您可以使用where子句检查用户游戏列表中的游戏存在:
$user = User::find(1);
$gameHasUser = $user->games()->where('title', 'pacman')->isNotEmpty();