/** * @return bool */ public function delete() { $this->current_game_user_id = null; $this->winner_game_user_id = null; $this->update(); GameUser::where(['game_id' => $this->id])->deleteEach(); return parent::delete(); }
/** * @test */ public function shouldRestartLastGame() { //given /** @var User $user1 */ $user1 = User::create(['login' => 'A']); /** @var User $user2 */ $user2 = User::create(['login' => 'B']); $game1 = Game::create(); $game1->addPlayer($user1->getId()); $game1->addPlayer($user2->getId()); $game1->updateAttributes(['finished' => true]); //when Game::restart(); //then $game = Game::findUnfinishedGame(); $this->assertFalse($game->isFinished()); $this->assertTrue($game->isStarted()); Assert::thatArray(GameUser::where(['game_id' => $game->getId()])->fetchAll())->hasSize(2)->onProperty('user_id')->containsExactly($user1->getId(), $user2->getId()); }
/** * @return int */ public function countWonGames() { return GameUser::where(['user_id' => $this->id])->innerJoin('winner_game')->count(); }