使用Laravel在控制器中递增整数

时间:2019-05-03 20:40:48

标签: php laravel eloquent

我不确定如何在控制器中递增整数

这是我尝试过的。我正在获取代码,添加一个然后保存。这将产生错误:“在字符串上调用成员函数save()”

我将返回计数以在浏览器中查看结果。在Tinker中运行$ count = Count :: find(1)-> count会给出正确的金额。

public function update(Request $request, Count $count)
{
    $count = Count::find(1)->count;

    $addOne = $count + 1;

    $count->save();

    return ($count);
}

有人可以告诉我这怎么不起作用以及我该怎么做才能解决这个问题?

这是迁移:

 public function up()
  {
     Schema::create('counts', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->integer('count');
        $table->timestamps();
     });
 }

这是模态:

  <?php

  namespace App;

  use Illuminate\Database\Eloquent\Model;

  class Count extends Model
  {
      protected $fillable = [
        'count'
      ];
  }

3 个答案:

答案 0 :(得分:4)

问题是您存储的是count属性,而不是对象本身。

$count = Count::find(1);

$count->count += 1;

$count->save();

return ($count);

应该做到这一点。

更多定义的命名也可能会有所帮助。不得不做一些精神体操来把我的头缠在我正在数的数字上。

答案 1 :(得分:1)

可接受的答案很好,但是使用Laravel提供的帮助方法可以更轻松地实现。

这样的代码:

$count = Count::find(1);
$count->increment('count');

return $count;

会做同样的事情。

答案 2 :(得分:0)

您可以

  $count = Count::find(1);
  $count->count += 1;
  $count->save();
  return $count;