web-dev-qa-db-ja.com

CakePHPの1つのフィールドを更新するにはどうすればよいですか?

1つのフィールド「is_featured」を特定のIDのイベントモデルの1(true))に変更して、イベントを「Featured」としてマークする関数が必要です。

class EventsController extends AppController{
function feature($id){}
}
32
Moe Sweet

たとえば、saveFieldを使用してこれを行うことができます

$this->Event->id = $id;
$this->Event->saveField('is_featured', true);
75
dqminh

2つの方法で1つのフィールドで更新を実行できます。

    $this->Model->id=$id;
    $this->Model->saveField("fieldName","value");

OR

    $this->Model->updateAll(array("fieldName"=>"value"),array("fieldName"=>"condition"));

2番目の例では、最初の配列は定義済みフィールドの値を更新し、2番目の配列は「WHERE」条件を定義します

12
Vineet Kumar

Set()メソッドも使用できます

$this->Model->read(null, $id);
$this->Model->set(array(
      'fieldname' => 'value',
));
$this->Model->save();
11
Dimpal Gohil

データを更新するcakephp 3:

  1. コントローラーに含める:

    use Cake\ORM\TableRegistry;

  2. あなたの行動では:

    $articlesTable = TableRegistry::get('Articles');
    $article = $articlesTable->get(12); // Return article with id 12
    
    $article->title = 'CakePHP is THE best PHP framework!';
    $articlesTable->save($article);
    

ソース: http://book.cakephp.org/3.0/en/orm/saving-data.html

3
Leonardo Correa

この手法を使用して、フィールドを更新できます。

$this->Event->save($this->request->data, true, array('id', 'is_featured'))

データの保存時に変更されたフィールドが自動的に更新されないようにするには、'modified' => falseを$ data配列に渡すidを渡さない場合、モデルは主キーを設定できず、フィールドを「編集」する代わりに「追加」します

1
Shinigami

あなたはこの簡単な方法を行うことができます

$this->Event->saveField('username', $user); //Where username is Model field name and $user is value
0
A.A Noman

奇妙なことに;時々私は普通の古いSQLに頼るのが好きです:ワンライナー+そこにオーバーヘッドなし、コールバック/イベントが関与しないことを確認します(これはあなたが望むものではないかもしれないことに注意してください!)

$id = (int) $id;
$this->Event->query("UPDATE events SET is_featured=1 WHERE id=$id");
0
ptica