我在保存Eloquent模型时遇到问题。例如:
$game = Game::select(['bank', 'state', 'quantity_of_players'])->find($id)->first();
$game->bank += $game->bet;
$game->quantity_of_players++;
$game->save();
据我所知,save()
应该在$id
的行中插入更改的值,而是插入第一行。有什么问题,以及如何在指定的行中将其正确保存到我的数据库中。
此模型的迁移:
public function up()
{
Schema::create('games', function (Blueprint $table) {
$table->bigIncrements('id');
$table->enum('state', ['wait', 'search', 'accept', 'play', 'finish']);
$table->smallInteger('quantity_of_players');
$table->smallInteger('ready_players');
$table->smallInteger('finished_players');
$table->integer('bank');
$table->smallInteger('bet');
});
}
非常感谢任何帮助。
P.S。所有SELECT
请求都可以完美运行,例如Eloquent create()
。
答案 0 :(得分:1)
find()
方法内部调用first()
。在继续之前检查行是否存在也是一种很好的做法。使用findOrFail()
为您完成此操作。
$game = Game::findOrFail($id);
$game->bank += $game->bet;
$game->quantity_of_players++;
$game->save();
修改强>
如果您坚持选择列甚至更新。然后这样做
$game = Game::whereId($id)->first(['bank', 'state', 'quantity_of_players']);
答案 1 :(得分:0)
请尝试以下
<div id="Nav" class="navbar navbar-fixed-top navbar-inverse navbar-static" role="navigation">