PHP Laravel 5.4.21。 Eloquent在第一行保存插入

时间:2017-06-02 11:36:29

标签: php mysql laravel eloquent

我在保存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()

2 个答案:

答案 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">