バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

バグ報告 > フロント機能 > お届け先に紐づくレコードがあるとお届け先の削除でエラー

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2018/8/28 16:49
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 907
Re: お届け先に紐づくレコードがあるとお届け先の削除でエラー
red 様
ご返信ありがとうございます。

onDelete: CASCADE を追加してみましたが、同じエラーが出てしまいます。
プラグインを無効化して有効化し直してみても変わりませんでした。
なにか指定の方法が悪いのでしょうか?

app/Plugin/OverseasAddress/Resource/doctrine/Plugin.OverseasAddress.Entity.OverseasAddressCustomerAddress.dcm.yml
Plugin\OverseasAddress\Entity\OverseasAddressCustomerAddress:
    type: entity
    table: plg_overseas_address_customer_address
    repositoryClass: Plugin\OverseasAddress\Repository\CustomerAddressRepository
    id:
        id:
            type: integer
            nullable: false
            unsigned: false
            id: true
            column: id
            generator:
                strategy: AUTO
    fields:
        zipcode_overseas:
            type: text
            nullable: true
        tel_overseas:
            type: text
            nullable: true
        fax_overseas:
            type: text
            nullable: true
    manyToOne:
        CustomerAddress:
            targetEntity: Eccube\Entity\CustomerAddress
            inversedBy: OverseasAddressCustomerAddress
            joinColumn:
                name: customer_address_id
                referencedColumnName: customer_address_id
                nullable: false
                onDelete: CASCADE    # ★追加
    lifecycleCallbacks: {  }


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

red
投稿日時: 2018/8/1 10:56
対応状況: −−−
登録日: 2010/2/15
居住地: 東京都
投稿: 1342
Re: お届け先に紐づくレコードがあるとお届け先の削除でエラー
onDelete: CASCADE とか出来ないんでしょうか?


----------------
EC-CUBEのカスタマイズ、トラブル解決承ります
お気軽にお問い合わせ下さい
https://www.ec-cube.net/integrate/partner/partner.php?partner_id=690

EC-CUBE4のプラグイントラブル、調査します

h_tanaka
投稿日時: 2018/7/31 19:17
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 907
お届け先に紐づくレコードがあるとお届け先の削除でエラー
EC-CUBE3.0.16

プラグインでお届け先 CustomerAddress に関連づけたテーブルを作成しました。

app/Plugin/OverseasAddress/Resource/doctrine/Plugin.OverseasAddress.Entity.OverseasAddressCustomerAddress.dcm.yml
Plugin\OverseasAddress\Entity\OverseasAddressCustomerAddress:
    type: entity
    table: plg_overseas_address_customer_address
    repositoryClass: Plugin\OverseasAddress\Repository\CustomerAddressRepository
    id:
        id:
            type: integer
            nullable: false
            unsigned: false
            id: true
            column: id
            generator:
                strategy: AUTO
    fields:
        zipcode_overseas:
            type: text
            nullable: true
        tel_overseas:
            type: text
            nullable: true
        fax_overseas:
            type: text
            nullable: true
    manyToOne:
        CustomerAddress:
            targetEntity: Eccube\Entity\CustomerAddress
            inversedBy: OverseasAddressCustomerAddress
            joinColumn:
                name: customer_address_id
                referencedColumnName: customer_address_id
                nullable: false
    lifecycleCallbacks: {  }


マイページのお届け先の追加・編集にてレコードの登録・更新はうまくいったのですが、お届け先の削除でレコードが削除できません。

イベント発火タイミングがお届け先の削除後にしかなく、お届け先の削除前にプラグイン側の処理を呼べないためです。

src/Eccube/Controller/Mypage/DeliveryController.php
    /**
     * お届け先を削除する.
     *
     * @param Application $app
     * @param $id
     * @return \Symfony\Component\HttpFoundation\RedirectResponse
     */
    public function delete(Application $app, Request $request, $id)
    {
        $this->isTokenValid($app);

        log_info('お届け先削除開始', array($id));

        $Customer = $app['user'];

        $status = $app['eccube.repository.customer_address']->deleteByCustomerAndId($Customer, $id);

        if ($status) {
            $event = new EventArgs(
                array(
                    'id' => $id,
                    'Customer' => $Customer,
                ), $request
            );
            $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_MYPAGE_DELIVERY_DELETE_COMPLETE, $event);

            $app->addSuccess('mypage.address.delete.complete');

            log_info('お届け先削除完了', array($id));

        } else {
            $app->addError('mypage.address.delete.failed');

            log_info('お届け先削除失敗', array($id));
        }

        return $app->redirect($app->url('mypage_delivery'));
    }


なお、プラグインのテーブルと紐付いたレコードがある状態でお届け先の削除を行おうとするとエラーになります。
ForeignKeyConstraintViolationException in AbstractMySQLDriver.php line 60:
An exception occurred while executing 'DELETE FROM dtb_customer_address WHERE customer_address_id = ?' with params [25]:
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`eccube3.0.16`.`plg_overseas_address_customer_address`, CONSTRAINT `FK_46A071E887EABF7` FOREIGN KEY (`customer_address_id`) REFERENCES `dtb_customer_address` (`customer_address_id`))

本体の機能不足と思いますので、バグ報告として挙げます。
また、お届け先の削除でプラグイン側で削除処理を追加する方法ご存じでしたらお教えいただきたいです。

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


 



ログイン


EC-CUBEペイメント

ec-cube.co

統計情報

総メンバー数は49,431名です
総投稿数は93,180件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1967
4
468
1818
5
yuh
1602
6
red
1342
7
umebius
1296
8
fukap
907
9
h_tanaka
907
10
tsuji
856
11
shutta
835
12 ramrun 789
13
tao_s
774
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

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