Baby step - 思考と実験の足跡

日常のちょっとした、気になって試したこと集です。

2019-06-01から1ヶ月間の記事一覧

MySQLのカラム型による使用バイト数について調べたこと

DB設計をしていて、MySQLについての制約について調べたことをメモ varchar型の使用バイト数 limitが255のときは1byte limitが256のときは2bytes CakePHP3のマイグレーションでstring型を指定した場合、limitを設定しなければ255となります。 参考:MySQLのva…

テーブル設計時におけるnull制約の取扱について現時点の結論

はじめに 自社サービスのリニューアルに伴うDB設計に2日間取り組みました。 DB設計は、機能追加に伴う粒度であれば経験がありますが、 サービスの根本から考えるDB設計は始めてです。 自分が知っていること、経験した事を元に理想の構成を考えたり、ググった…

tinyint型のカラムにtrueを入れたらバリデーションで拒否された件

ハマったこと boolean型の値を入れるカラムを用意する # マイグレーションファイルの一部 ->addColumn('set_tax_in', 'integer', [ 'default' => '0', 'limit' => MysqlAdapter::INT_TINY, 'null' => false, 'signed' => false, ]) 以下のようにバリデーショ…

マイグレーション作成時のテストは別DBを選択するとラク

ローカル環境への実行といえど、マイグレーションの動作テストに失敗するとテストデータの入れ直しが地味に大変。 変更箇所が多いとヌケモレも起きやすいので、リスクが増える。 そんなわけで、マイグレーション用のDBを用意するとラク。 # app.php 'Datasou…

Railsのfind_or_initialize_byにあたる関数をCakePHP3で作ってみた

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.