バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
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`))

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

フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » お届け先に紐づくレコードがあるとお届け先の削除でエラー h_tanaka 2018/7/31 19:17
     Re: お届け先に紐づくレコードがあるとお届け先の削除でエラー red 2018/8/1 10:56
       Re: お届け先に紐づくレコードがあるとお届け先の削除でエラー h_tanaka 2018/8/28 16:49

 



ログイン


EC-CUBEペイメント

ec-cube.co

統計情報

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

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1968
4
468
1818
5
yuh
1602
6
red
1343
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.