2016-11-09 3 views
0

Как обновить данные в cakephp 3?Cakephp 3 Обновить запрос

+0

в первую очередь проверьте CakePHP 3 docs на [как обновить данные] (https://book.cakephp.org/3.0/en/orm/saving-data.html#updating-data) перед тем, как задать вопрос здесь. Я думаю, что это больше лень. – CodeWhisperer

ответ

5

Попробуйте это,

$tablename = TableRegistry::get("Model"); 
$query = $tablename->query(); 
      $result = $query->update() 
        ->set(['fieldname' => 'value']) 
        ->where(['condition' => 'value']) 
        ->execute(); 
+1

Знайте, что это не стандартный способ обновления данных. Это не вызывает события типа Model.afterSave. – jurrieb

3

Вы можете использовать другие методы, такие:

$tablename = TableRegistry::get("Model"); 
$conditions = array('id'=>12); 
$fields = array('name'=>'andro','family'=>'lpoez'); 
$tablename->updateAll($fields, $conditions); 
+0

Ссылка https://book.cakephp.org/3.0/ru/orm/saving-data.html разделы массовых обновлений – omid

0
use Cake\ORM\TableRegistry; 

$articlesTable = TableRegistry::get('Articles'); 
$article = $articlesTable->get(12); // Return article with id 12 

$article->title = 'CakePHP is THE best PHP framework!'; 
$articlesTable->save($article); 
+4

Добро пожаловать в StackOverflow. Хороший ответ на вопрос должен включать не только код, но и описание того, что вы делаете, и почему вы считаете, что это правильный ответ. Кроме того, пожалуйста, прочитайте руководство по форматированию в редакторе ответов, чтобы узнать, как правильно отправлять код. – yakatz

0

Вы также можете создать/обновить регистрационную информацию таблицы при использовании newEntity() или patchEntity(). Данные POST должны выглядеть следующим образом:

// Для добавления новой записи

$table = $this->Table->newEntity(); 

if($this->request->is(['post'])){ 
    $post_data = $this->request->data; 
    $table = $this->Tags->patchEntity($table, $post_data); 
    $this->Table->save($table); //save record 
} 

// Для обновления записи

$table = $this->Table->get($id); //get data using id 

if ($this->request->is(['post'])) { 
    $post_data = $this->request->data; 
    $table = $this->Tags->patchEntity($table, $post_data); 
    $this->Table->save($table); //update record 
} 
0

Обновление данных одинаково легко, и сохранить() метод также используется для этой цели:

use Cake\ORM\TableRegistry; 

$articlesTable = TableRegistry::get('Articles'); 
$article = $articlesTable->get($id); // Return article with id = $id (primary_key of row which need to get updated) 

$article->title = 'CakePHP is THE best PHP framework!'; 
// other fields if necessary 
.......... 
$articlesTable->save($article); 

CookBook official Documentation

0

Существует несколько способов обновления данных.

Вы можете получить существующий объект и значение изменения и обновление: https://book.cakephp.org/3.0/en/orm/saving-data.html#updating-data

$entity = TableRegistry::get('Users')->get(1); 
$entity->name = 'foo'; 
TableRegistry::get('Users')->save($entity); 

Вы можете залатать объект с массивом для запроса экземпляра данных: https://book.cakephp.org/3.0/en/orm/saving-data.html#merging-request-data-into-entities

$entity = TableRegistry::get('Users')->get(1); 
TableRegistry::get('Users')->patchEntity($entity, $this->request>getData); 
TableRegistry::get('Users')->save($entity); 
Смежные вопросы