バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

開発について

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2018/6/18 17:46
対応状況: 解決済
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 651
有効化でレコードを追加したい
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
居住地: 東京日本橋
投稿: 1091
Re: 有効化でレコードを追加したい
CSV_TYPE_ORDERに限ってはいないですが、
おそらくこういうことかと思います。

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


----------------
////////////////
(株)U-Mebius EC-CUBE3系4系 カスタマイズ
ECカスタマイズのプロが短納期のシステム特急案件承ります。

h_tanaka
投稿日時: 2018/6/19 16:04
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 651
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
居住地: 東京日本橋
投稿: 1091
Re: 有効化でレコードを追加したい
引用:
$app = \Eccube\Application::getInstance(); で $app が取得できるのですね。


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


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

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


 



ログイン


EC-CUBEペイメント

統計情報

総メンバー数は40,691名です
総投稿数は90,062件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1878
4
468
1573
5
yuh
1570
6
red
1213
7
umebius
1091
8
fukap
907
9
tsuji
837
10
shutta
827
11 ramrun 789
12
tao_s
691
13 karin 656
14
h_tanaka
651
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.