laravel检查集合是否包含模型

时间:2017-12-27 17:54:05

标签: laravel eloquent

我有很多关系:

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?

3 个答案:

答案 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();