バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

プラグイン > 開発について > 有効化でレコードを追加したい

開発について

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2018/6/18 17:46
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
有効化でレコードを追加したい
EC-CUBE3.0.16

プラグインを有効化したタイミングで dtb_csv にレコードを追加したいと思っていますが、可能でしょうか?

Migrations を次のように実装しようとしていますが、rank を設定するために既存レコードの rank の MAX 値の取得方法がわからないです。
なお、次のコードは動作未検証です。

<?php
namespace DoctrineMigrations;

use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;

class Version20180618162100 extends AbstractMigration
{
    public function up(Schema $schema)
    {
        $this->insertRecordPlgOverseasAddressCsv($schema);
    }

    protected function insertRecordPlgOverseasAddressCsv(Schema $schema)
    {
        $now = new \DateTime();

        $Csv = new \Eccube\Entity\Csv();
        $CsvType = $schema->getTable('dtb_csv_type')->find(\Eccube\Entity\Master\CsvType::CSV_TYPE_ORDER);
        $rank = $schema->getTable('dtb_csv')->???;  // ★ CSV_TYPE_ORDER の rank の MAX 値を取得したい
        $Csv->setCsvType($CsvType);
        $Csv->setEntityName('Eccube\\Entity\\Order');
        $Csv->setFieldName('order_country_id');
        $Csv->setReferenceFieldName(null);
        $Csv->setDispName('国');
        $Csv->setEnableFlg(0);
        $Csv->setRank($rank + 1);
        $Csv->setCreateDate($now);
        $Csv->setUpdateDate($now);
        $Csv->save();
    }
}
umebius
投稿日時: 2018/6/18 18:07
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 有効化でレコードを追加したい
CSV_TYPE_ORDERに限ってはいないですが、
おそらくこういうことかと思います。

以前同じようなことを書いたので参考になるかもしれません。
https://umebius.com/eccube/get_max_id_or_rank_value_from_table/


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

h_tanaka
投稿日時: 2018/6/19 16:04
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: 有効化でレコードを追加したい
umebius 様
ありがとうございます。

$app = \Eccube\Application::getInstance();
で $app が取得できるのですね。
勉強になります。

ご提示の方法でうまくいきました!

<?php
namespace DoctrineMigrations;

use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;

class Version20180618162100 extends AbstractMigration
{
    public function up(Schema $schema)
    {
        $this->insertRecordPlgOverseasAddressCsv($schema);
    }

    protected function insertRecordPlgOverseasAddressCsv(Schema $schema)
    {
        $app = \Eccube\Application::getInstance();

        $now = new \DateTime();

        // 受注CSV
        $Csv = new \Eccube\Entity\Csv();
        $CsvType = $app['eccube.repository.master.csv_type']
            ->createQueryBuilder('ct')
            ->where('ct.id = :id')
            ->setParameters(array('id' => \Eccube\Entity\Master\CsvType::CSV_TYPE_ORDER))
            ->getQuery()
            ->getSingleResult();
        $rank = $app['eccube.repository.csv']
            ->createQueryBuilder('c')
            ->select('max(c.rank)')
            ->where('c.CsvType = :CsvType')
            ->setParameters(array('CsvType' => $CsvType))
            ->getQuery()
            ->getSingleScalarResult();
        $rank++;
        $Csv->setCsvType($CsvType);
        $Csv->setEntityName('Eccube\\Entity\\Order');
        $Csv->setFieldName('Country');
        $Csv->setReferenceFieldName('id');
        $Csv->setDispName('国(ID)');
        $Csv->setEnableFlg(0);
        $Csv->setRank($rank);
        $Csv->setCreateDate($now);
        $Csv->setUpdateDate($now);
        $app['orm.em']->persist($Csv);
        
        $app['orm.em']->flush();
    }

    public function down(Schema $schema)
    {
    }
}


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

umebius
投稿日時: 2018/6/19 17:11
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 有効化でレコードを追加したい
引用:
$app = \Eccube\Application::getInstance(); で $app が取得できるのですね。


Version20180618162100がアプリケーションへ依存してしまうことになり、システム開発の概念上はあまり良い方法ではないと思いますが、(自分で言っておいて申し訳ございません)
EC-CUBE内で使われている方法でもありますし、このケースでは問題ないかなと思います。
h_tanaka
投稿日時: 2018/6/19 17:14
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: 有効化でレコードを追加したい
そうですね、アプリケーションを使用せずDoctorineのSchemaだけでレコード登録できればよいですが、調べてもわからなかったので仕方ないかと思います。


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

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
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.