PHPシェアするEC-CUBE3でテーブルにカラムを追加(編集)する場合、公式の方法として下記のように行います。基本的に既存テーブルに対してプラグインからカラムを追加するような拡張は推奨していません。既存テーブルに対して、例えばdtb_customerテーブルにニックネームを追加したい時は、プラグイン側でplg_profileというようなテーブルを作成して関連付けをします。プラグインを使って既存のテーブルに拡張をする場合、カラム追加する上でテーブルも増えてしまいます。すると、拡張するテーブルが増えると処理の実装で見なければいけないテーブルの数も増え、複雑になってしまいます。その複雑化を避け、実装を行いやすくするために、今回プラグインを使わず直接テーブルにカラムを追加していく方法を紹介します。作業環境は下記の通りです。まとめdcm.ymlの編集DB定義のベースとなっているsrc/Eccube/Resource/doctrine/ymlを編集します。例としてEccube.Entity.Product.dcm.ymlの任意の位置に下記を追加します。編集したymlファイルをベースに下記コマンドでEntityファイルを更新します。src再生成ではなく更新なので独自に追加したものもそのまま保持されます。今回追加された内容は下記のようになります。下記コマンドでsrc/Eccube/Resource/doctrine/migration内にマイグレーションファイルを自動生成します。INDEXの処理は不要な変更なので削除しておきます。}INDEXが差分として出てきてしまうのは、longtext型にINDEXを張る場合、対象とする文字列長を指定する必要があります。マイグレーションファイルを自動生成する際には文字列長の指定まではしません。そのため個別にマイグレーションが記述されており、dcm.ymlではコメントアウトされてるためそれが差分として抽出されるからです。2018xxxxxxxxxxブラウザで実行コマンドでマイグレーション実行できない場合は下記URLにアクセスし、進めていきます。https://ドメイン名/install.php/migrationなお、ブラウザからはロールバックは実行できないようです。まとめdcm.ymlを編集し、コマンドで追加された分のエンティティが更新されます。あとはマイグレーションファイルを生成し、余計な差分を消した後に実行します。murayama新卒1年目のエンジニアです。PHPを勉強中で、今まで学んできたことを記事にしていきたいと思っております。記事の一覧を動的に表示させ、記事毎に設置させているボタンを押すと、対象の記事の「記事タイトル」を使った確認ダイアログが表示されるようにしたかった。CakePHPで色々処理を書いていた中、JavaScriptを連動させてみました。記事を読むEC-CUBE3でプラグインを使ったテーブルの作り方EC-CUBE3のプラグインでテーブルを作成する手順の紹介です。テーブルとエンティティをマッピングするための設定ファイルdcm.ymlを作り、その後にEC-CUBE3で用意されているコマンドを実行して、必要なファイルやテーブルを作成します。記事を読むCakePHPのvalidationDefaultで重複チェックをする方法CakePHP3のvalidationDefaultで重複チェックを行う方法を説明いたします。保存時のbuildRulesではなくvalidationDefaultで行うことで、入力後の確認画面に遷移する前にチェックができるようになります。記事を読むCakePHP3で最低限のログイン画面(Auth認証)を作ってみたCakePHP3でログイン処理を実装しました。今回は余計な設定はできるだけ省いたシンプルなログインフォームを紹介します。これまでログイン時の処理を感覚だけで理解していましたが、処理を追うことで何をしているか理解が深まった気がします。Template」エラーが出てきました。対応するディレクトリに関数名と同じ名前のctpファイルを格納しているはずなのに。調べたところ、それまであまり気にしていなかった命名規則に原因があるらしい、、。記事を読むCakePHPで同じカラムに複数のカスタムバリデーションをセットする方法CakePHPのバリデーションの話です。同じカラムに対して複数のカスタムバリデーションを設定したかったのですが、1つしかバリデーションが効かなかったので原因を追求しました。記事を読むCakePHP3でエレメントの使い方CakePHP3でエレメントの使い方を紹介します。ビューのテンプレートファイルで、ある一部分の要素を使いまわしたい時に便利です。記事を読む【CakePHP】データベースにデータを新規に保存する今回はデータベースにデータを新規に保存する方法について紹介します。データベースにデータを保存するにはエンティティが必要です。記事を読むSmartyのテンプレートファイルの中で、文字列をテンプレートとして読み込む方法SmartyのテンプレートからSmartyの構文が入った文字列をレンダリングするやり方です。Smartyのテンプレートを、ファイルからではなく文字列から読み込ませたかったので公式のドキュメントからやり方を探しました。記事を読むCakePHP3で個別にログファイルを残す方法CakePHP3で、デフォルトで用意されているログ以外のファイルにログを出力する方法を紹介いたします。「error」でも「debug」でもないロガーを「app.php」に追加し、スコープを使って追加したロガーで書き込む処理をするだけです。