Проблема с простым запросом в cakePhp - PullRequest
0 голосов
/ 06 ноября 2019

Я изучаю CakePhp, и я все еще блокирую эту проблему, вероятно, действительно легко. Я просто хочу увеличить значение (количество) в моей БД.

Я сгенерировал код через bake, все работает нормально, но я хочу настроить его, чтобы сделать законченное приложение.

другоевопрос, лучше это сделать в контроллере или в модели? Я немного запутался с этим

в StockController.php:

public function increment($id = null){
        $this->Stock->updateAll(
            array('Stock.count' => 'Stock.count + 1'),
            array('Stock.id' => $id ));
        $this->Flash->success(__('stock count +1.'));
        return $this->redirect(['action' => 'index']);
    }

Я получил сообщение об ошибке 500

1 Ответ

0 голосов
/ 07 ноября 2019

В CakePHP у вас есть два вида объектов модели:

  • Объекты таблицы - обеспечивают доступ к коллекции объектов, хранящихся в определенной таблице
  • Entities - одна строка из объекта Table

Для вашего StockController $this->Stock представляется вашим объектом Table. Чтобы изменить (или увеличить) одну сущность, вам нужно сначала получить эту сущность, а затем сохранить ее:

public function increment ($id = null) {
    // Get Entity + increment count
    $entity = $this->Stock->get($id);
    $entity->count = $entity->count++;

    // Then you need to save your Entity using the Table Object
    if ($this->Stock->save($entity)) {
        $this->Flash->success(__('Stock count +1.'));
        return $this->redirect(['action' => 'index']);
    }

    // If save fails
    $this->Flash->error(__('Stock increment failed :('));
}

Небольшие изменения ваших данных я бы сделал в Контроллере, если вам нужно обновить и изменить большесложные данные, которые я бы создал Setters для вашей сущности или методов в вашем объекте таблицы.

Удачного кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...