2019-06-01から1ヶ月間の記事一覧
DB設計をしていて、MySQLについての制約について調べたことをメモ varchar型の使用バイト数 limitが255のときは1byte limitが256のときは2bytes CakePHP3のマイグレーションでstring型を指定した場合、limitを設定しなければ255となります。 参考:MySQLのva…
はじめに 自社サービスのリニューアルに伴うDB設計に2日間取り組みました。 DB設計は、機能追加に伴う粒度であれば経験がありますが、 サービスの根本から考えるDB設計は始めてです。 自分が知っていること、経験した事を元に理想の構成を考えたり、ググった…
ハマったこと 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にすることでエスケープできるが、一部のクエリが書けなくなる クエリービルダー経由でも意外と簡単に書け…
ブログに対する不安を解決してブログをはじめました。はてなブログに体験ログなどを書いて、ある程度まとまったらQiitaに書く。引用はOKだけど転載はNG. 参考URLを貼るのは意外にもOK.