質問 > 管理機能 > 既存テーブルに対する外部キーについて |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
yuy-tank |
投稿日時: 2019/3/28 16:59
対応状況: 開発中
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
既存テーブルに対する外部キーについて プラグインでテーブルAを新規作成しました。そのテーブルAと既存テーブルProductを関連づけるために、プラグイン側のORM定義でjoinColumnを指定しました。しかし、phpMyAdminを見る限り、どうもproduct_idが外部キーになっていないようです。既存のテーブルに対する外部キーを設定することはできないのでしょうか?
|
468 |
投稿日時: 2019/3/28 17:47
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 既存テーブルに対する外部キーについて $table = $schema->createTable('dtb_table_a');
$targetTable = $schema->getTable('dtb_product'); $table->addForeignKeyConstraint( $targetTable, array('product_id'), array('product_id') ); のような記述で外部キーを定義できるかと思います。
|
yuy-tank |
投稿日時: 2019/3/28 18:14
対応状況: −−−
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
Re: 既存テーブルに対する外部キーについて 返信していただきありがとうございます。
そうすれば外部キーを定義できるのですね。ちなみにデータベースの知識が浅くて申し訳ないのですが、なぜプラグイン側でのテーブル作成時に標準で外部キーを定義できないのでしょうか?ECCUBEではそのような仕様なのでしょうか、それともデータベースレベルの問題としてそうならざるを得ないのでしょうか? |
468 |
投稿日時: 2019/3/28 18:30
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 既存テーブルに対する外部キーについて 標準でというのは、ORMでリレーションを定義しているにもかかわらず、
外部キーが設定されないのは何故かと言う事でしょうか?
|
yuy-tank |
投稿日時: 2019/3/29 11:18
対応状況: −−−
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
Re: 既存テーブルに対する外部キーについて 言葉が少なくて申し訳ありません。
そうです、ORMでリレーション定義しているにも関わらず、という意味です。 外部キーが設定されないのは、プラグインよりもECCUBE本体側の動作を優先するということなのでしょうか? 例えば、プラグイン側で作成したエンティティAはProductを所有しています。 1. 外部キーが設定してあると、Productのレコード削除時に例外が発生。 2. 外部キーが設定されていないと、Productのレコード削除はできるが、プラグイン側で例外が発生。 仕様として、2.のケースを選択したと考えたのですが、いかがでしょうか? |
468 |
投稿日時: 2019/3/29 12:17
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 既存テーブルに対する外部キーについて ECCUBEの設計思想は私は分かりかねますので、
何故そうなのか回答出来ないのですが、 プラグインでテーブルを生成はどのようにされたのでしょうか? 私はいつもマイグレーションクラスは手動で作成しているので、 あまりその辺りを気にした事がありませんでした。
|
yuy-tank |
投稿日時: 2019/3/29 14:32
対応状況: −−−
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
Re: 既存テーブルに対する外部キーについて テーブルの定義は全てORMで定義しています。
マイグレーションでは、テーブルの作成のみ行っています。 私の知識が浅いのが原因ですが、マイグレーションで制約を設けられることを知りませんでした。そもそも、マイグレーションはORM定義をただデータベースに反映するものだと思っていました。 マイグレーションはデータベースレベルの操作をすることができ、ORM定義をデータベースに反映するのは、マイグレーションができる処理の1つに過ぎないということになるのでしょうか? |
468 |
投稿日時: 2019/3/30 8:56
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 既存テーブルに対する外部キーについて 私はORM定義を実データベースに反映する手順を記録したものがマイグレーションと理解しております。
SQL発行に関わる内容はマイグレーションでほぼ対応出来るのではないでしょうか? SQLを一切書かせずにsymfonyアプリケーションのソースのみでデータベースの制御、管理を行える事を目的にしていると思います。
|
yuy-tank |
投稿日時: 2019/4/1 10:22
対応状況: −−−
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
Re: 既存テーブルに対する外部キーについて なるほど、参考になりました。
わかりやすい説明をしていただき、ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |