バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 複数サイトで会員データを共通化

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
jgjg
投稿日時: 2020/8/28 14:39
対応状況: −−−
半人前
登録日: 2020/8/19
居住地:
投稿: 12
複数サイトで会員データを共通化
[EC-CUBE]4.0.4(新規インストール)
[PHP]7.2.27
[データベース] MySQL 10.4.11

複数のサイトで、会員情報を共通化し、どのサイトでも同じユーザーでログインできるようにしたいです。
以下サイトを参考にしていますが、バージョンが異なるので、そのまま同じようには進められません。
https://qiita.com/chihiro-adachi/items/bb47fa419bb13e2c339a

ご助言をお願いしたいです。
よろしくお願いします。
468
投稿日時: 2020/8/29 11:09
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2692
Re: 複数サイトで会員データを共通化
リンク先で紹介されているymlに相当する記述はECCUBE4では
/src/Eccube/Entity/以下の各PHPファイル内にてアノテーションで設定されています。
例えばcustomer.phpであれば
 * @ORM\Table(name="dtb_customer", uniqueConstraints={@ORM\UniqueConstraint(name="secret_key", columns={"secret_key"})}, ...

の1行がDBとの接続に関する設定となります。
nameのdtb_customerを[店舗Aのデータベース名].dtb_customerとする事で
該当のテーブルのみ別DBに繋がるのかどうかは分かりませんが...
あと、このような連携を行った場合、トランザクションが保証されるのかどうか分かりません。
(別々のサイトでほぼ同時に買い物をした時にポイントの計算が重複したり反映されなかったりといった現象を100%防げる保証が保てるのかどうか分からないという意味です)


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

jgjg
投稿日時: 2020/8/29 18:23
対応状況: −−−
半人前
登録日: 2020/8/19
居住地:
投稿: 12
Re: 複数サイトで会員データを共通化
468様

ご回答ありがとうございます。
確かにcustomer.phpを書き換えたところ、1つのユーザーで2つのサイトにログインすることができました。
しかし、書き換えたほうのサイトではログインできるものの、商品をカートに入れたり、お気に入りに入れるなどができませんでした。サーバーエラーになります。

今回、お気に入りやお届け先情報の共有は求めておらず、同じユーザーでログインできることが目標です。(参考リンクはお気に入りなども共有しています)

以下も参考にしようと思いましたが、もしものことを考えるとやはりやらないほうが良いのかもしれないと思いました…
<別のサーバーのデータベースのテーブルデータを更新するトリガーを作成する>
https://www.it-swarm.dev/ja/mysql/%E5%88%A5%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%9B%B4%E6%96%B0%E3%81%99%E3%82%8B%E3%83%88%E3%83%AA%E3%82%AC%E3%83%BC%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B/l956682774/

468様、ありがとうございました。
468
投稿日時: 2020/8/30 10:36
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2692
Re: 複数サイトで会員データを共通化
>しかし、書き換えたほうのサイトではログインできるものの、商品をカートに入れたり、お気に入りに入れるなどができませんでした。サーバーエラーになります。
ユーザーと連携をしているテーブルに関して、外部制約がDBのほうで定義されているかと思いますが
同一DB内のテーブル同士で制約チェックしている為、DB内に存在しないユーザーIDを持つお気に入りや注文のレコードが格納できないのだと思います。
これに関してはDBを操作して外部制約を外していく必要があるのではないでしょうか?


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

jgjg
投稿日時: 2020/8/31 15:15
対応状況: −−−
半人前
登録日: 2020/8/19
居住地:
投稿: 12
Re: 複数サイトで会員データを共通化
468様

ありがとうございます!

>同一DB内のテーブル同士で制約チェックしている為、DB内に存在しないユーザーIDを持つお気に入りや注文のレコードが格納できないのだと思います。
>これに関してはDBを操作して外部制約を外していく必要があるのではないでしょうか?

仰る通りでした。
dtb_cart
dtb_customer_address
tb_customer_favorite_product
dtb_order
のcustomer_idの外部キーを削除したところ、
お気に入りやカートに入れる処理ができるようになりました。

今この状態が目指していた状態ではありますが、
最初に468様が仰っていた
>このような連携を行った場合、トランザクションが保証されるのかどうか分かりません。
について、どこで影響があるかわからないため、実際の運用で採用するか迷います。

ログインでき、会員の基本情報のみが共有されていて、
お気に入り・お届け場所・購入履歴・ポイントはサイト間で共有しない状態を求めています。
(今、Customer.phpの編集、auth magic の編集、上記外部キー削除で、望んだ状態にはなっています)

468様、ご回答ありがとうございます!

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は67,424名です
総投稿数は98,787件です

投稿数ランキング

1
seasoft
7333
2
AMUAMU
2712
3
468
2692
4
nanasess
2115
5
umebius
1788
6
yuh
1612
7
red
1427
8
h_tanaka
1051
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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