0

私の状況では、MySQL のログインと顧客の詳細の 2 つのテーブルにデータを追加する必要があります。データは Zend Framework 2 の 1 つのフォームによって収集され、同時にデータベースに追加されます。MySQL の両方のテーブルには Customer_ID があります。両方のテーブルで、customer_id は自動インクリメントです。フォームを介してデータを追加すると、Customer Details の Customer_ID が自動インクリメントされ、その値が Login テーブル Customer_ID にコピーされるようにしたいと考えています。

これまでのところ、LastInserverValue() で試してみました。Login の Customer_ID を FK にしてみました。customer_ID を Login に手動で割り当てようとしましたが、うまくいきませんでした。私が使用した上記の方法では、追加しただけですが、Customer_ID は同じではありません。

注: データは更新ではなく追加されています。

更新:最後の挿入IDを使用して取得できることはわかっていますが、ZF2の2つのテーブルに2つのテーブルゲートウェイを使用しているため、テーブルゲートウェイ1からテーブルゲートウェイ2への最後の挿入値を取得する方法がわかりません

4

3 に答える 3

0

両方のテーブルで、customer_id は自動インクリメントです

最初に、別のテーブル LOGIN から customer_id の自動インクリメントを削除します。tablegateway1 を使用して Customer テーブルに値を挿入し、最後の挿入値を取得すると、テーブル gateway2 を使用して、customer_id のログイン テーブルでこの値が更新されます。

これはうまくいくはずです。

于 2013-06-07T06:08:22.730 に答える
0

Paul Sellars が述べたように、1 つのテーブルから AI を削除すると、問題は解決されます。AI が定義されているテーブルで、最初にデータを挿入し、そこから last_insert_id を取得します。その値を使用して、AI が定義されていない他のテーブルにレコードを更新/挿入します。

于 2013-08-10T18:09:51.180 に答える
0

自動インクリメントは Customer テーブルにのみある必要があります。また、ログイン テーブルでログイン ID を自動インクリメントすることもできますが、login.customer_id を外部キーにするのは正しいことです。

ログイン プロセスでは、customer.customer_id を取得し、ログイン テーブルに挿入を作成します。

例: 構造:

お客様

customer_id INT PK、AI

ファーストネーム

苗字

ユーザー名

パスワード

ログイン

idPK、AI

customer_id (FK) customer.customer_id

created_at

于 2013-05-30T09:52:21.800 に答える