Увеличение целого числа в контроллере с помощью Laravel - PullRequest
1 голос
/ 03 мая 2019

Я не уверен, как увеличить целое число в контроллере

Это то, что я пытался.Я беру код, добавляю и сохраняю его.Это приводит к ошибке: «Вызов функции-члена save () on string»

Я возвращаю счетчик, чтобы увидеть результаты в браузере.Запуск $ count = Count :: find (1) -> count в Tinker дает правильную сумму.

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 ]

4 голосов
/ 03 мая 2019

Проблема в том, что вы сохраняете свойство count, а не сам объект.

$count = Count::find(1);

$count->count += 1;

$count->save();

return ($count);

Должен сделать свое дело.

Может помочь и более определенное именование. Пришлось сделать какую-нибудь умственную гимнастику, чтобы обернуть голову вокруг того, что я считал.

1 голос
/ 04 мая 2019

Принятый ответ хорош, но этого можно добиться еще проще с помощью вспомогательного метода, который предоставляет Laravel.

, поэтому этот код:

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

return $count;

сделает то же самое.

0 голосов
/ 04 мая 2019

Вы можете сделать

  $count = Count::find(1);
  $count->count += 1;
  $count->save();
  return $count;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...