1つのフィールド「is_featured」を特定のIDのイベントモデルの1(true))に変更して、イベントを「Featured」としてマークする関数が必要です。
class EventsController extends AppController{
function feature($id){}
}
たとえば、saveFieldを使用してこれを行うことができます
$this->Event->id = $id;
$this->Event->saveField('is_featured', true);
2つの方法で1つのフィールドで更新を実行できます。
$this->Model->id=$id;
$this->Model->saveField("fieldName","value");
OR
$this->Model->updateAll(array("fieldName"=>"value"),array("fieldName"=>"condition"));
2番目の例では、最初の配列は定義済みフィールドの値を更新し、2番目の配列は「WHERE」条件を定義します
Set()メソッドも使用できます
$this->Model->read(null, $id);
$this->Model->set(array(
'fieldname' => 'value',
));
$this->Model->save();
データを更新するcakephp 3:
コントローラーに含める:
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);
この手法を使用して、フィールドを更新できます。
$this->Event->save($this->request->data, true, array('id', 'is_featured'))
データの保存時に変更されたフィールドが自動的に更新されないようにするには、'modified' => false
を$ data配列に渡すidを渡さない場合、モデルは主キーを設定できず、フィールドを「編集」する代わりに「追加」します
あなたはこの簡単な方法を行うことができます
$this->Event->saveField('username', $user); //Where username is Model field name and $user is value
奇妙なことに;時々私は普通の古いSQLに頼るのが好きです:ワンライナー+そこにオーバーヘッドなし、コールバック/イベントが関与しないことを確認します(これはあなたが望むものではないかもしれないことに注意してください!)
$id = (int) $id;
$this->Event->query("UPDATE events SET is_featured=1 WHERE id=$id");