CakePHP3
ハマったこと boolean型の値を入れるカラムを用意する # マイグレーションファイルの一部 ->addColumn('set_tax_in', 'integer', [ 'default' => '0', 'limit' => MysqlAdapter::INT_TINY, 'null' => false, 'signed' => false, ]) 以下のようにバリデーショ…
ローカル環境への実行といえど、マイグレーションの動作テストに失敗するとテストデータの入れ直しが地味に大変。 変更箇所が多いとヌケモレも起きやすいので、リスクが増える。 そんなわけで、マイグレーション用のDBを用意するとラク。 # app.php 'Datasou…
idがあればupdateを、なければcreateをする $data = ['name' => 'hoge']; $entity = $table->findById($id)->first(); if ($entity != null) { $entity = $table->patchEntity($entity, $data) } else { $entity = $table->newEntity($data); } こんな感じの…
priceカラムを追加するマイグレーションを作る # Migrationファイル public function change() { $this->table('bills') ->addColumn('price', 'integer', [ 'default' => 0, 'limit' => 11, 'null' => false, ]) ->update(); エンティティに値が入らない $d…
背景 バリデーションが設定どおり動作するか確認する方法を調べてみました。 モデル側にバリエーションを設定 # Model public function validationBase(Validator $validator) { $validator ->nonNegativeInteger('id') ->allowEmpty('id', 'create'); $vali…
概要 あるモデルのカラム名がorderのような予約語の場合、クエリービルダー生成時にMySQLのエラーが起きる app.phpや.env中のquoteIdentifiersをtrueにすることでエスケープできるが、一部のクエリが書けなくなる クエリービルダー経由でも意外と簡単に書け…