バージョン選択

フォーラム

メニュー

オンライン状況

73 人のユーザが現在オンラインです。 (58 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 73
もっと...

サイト内検索

質問 > 管理機能 > 既存テーブルに対する外部キーについて

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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')
);

のような記述で外部キーを定義できるかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

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でリレーションを定義しているにもかかわらず、
外部キーが設定されないのは何故かと言う事でしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

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の設計思想は私は分かりかねますので、
何故そうなのか回答出来ないのですが、
プラグインでテーブルを生成はどのようにされたのでしょうか?

私はいつもマイグレーションクラスは手動で作成しているので、
あまりその辺りを気にした事がありませんでした。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

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アプリケーションのソースのみでデータベースの制御、管理を行える事を目的にしていると思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

yuy-tank
投稿日時: 2019/4/1 10:22
対応状況: −−−
一人前
登録日: 2017/11/10
居住地:
投稿: 72
Re: 既存テーブルに対する外部キーについて
なるほど、参考になりました。
わかりやすい説明をしていただき、ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,307名です
総投稿数は109,692件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.