EC-CUBE4 商品CSVに項目を追加する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[EC-CUBEめも]]
こちらのページを参考にさせていただきました。~
ありがとうございます。~
[[[EC-CUBE4] コピペして少し修正して使える INSERT dtb_csv(...
商品CSVダウンロードについては以下で実現できますが、アップ...
直接SQLを叩いて dtb_csv にデータを追加しても実現できます...
以下のようにファイルを作成します。~
app/DoctrineMigrations/Version20190813162700.php
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
use Doctrine\ORM\EntityManager;
use Eccube\Entity\Csv;
use Eccube\Entity\Master\CsvType;
use Eccube\Repository\CsvRepository;
use Eccube\Repository\Master\CsvTypeRepository;
use Symfony\Component\DependencyInjection\ContainerAware...
use Symfony\Component\DependencyInjection\ContainerInter...
/**
* 商品CSVに商品区分を追加する
*/
final class Version20190813162700 extends AbstractMigrat...
{
/** @var ContainerInterface */
private $container;
/** @var EntityManager */
private $em;
/** @var CsvRepository */
private $CsvRepository;
/** @var CsvTypeRepository */
private $CsvTypeRepository;
/** @var array */
private $CsvType;
public function setContainer(ContainerInterface $con...
{
$this->container = $container;
$this->em = $this->container->get('doctrine.orm....
$this->CsvRepository = $this->em->getRepository(...
$this->CsvTypeRepository = $this->em->getReposit...
$this->CsvType["Product"] = $this->CsvTypeRepos...
$this->CsvType["Customer"] = $this->CsvTypeRepos...
$this->CsvType["Order"] = $this->CsvTypeRepos...
$this->CsvType["Shipping"] = $this->CsvTypeRepos...
$this->CsvType["Category"] = $this->CsvTypeRepos...
}
public function up(Schema $schema) : void
{
// INSERT dtb_csv したい内容
$arr_insert_csv = [
[
"csv_type" => $this->CsvType["Product...
"entity_name" => "Eccube\\Entity\\Produc...
"disp_name" => "商品区分", ...
"field_name" => "ProductSize", ...
"reference_field_name" => "id", ...
"enabled" => true ...
]
];
$this->em->beginTransaction();
foreach($arr_insert_csv as $c){
$next_sort_no = $this->getCsvNextSortNo($c["...
$Csv = new Csv();
$Csv
->setCsvType($c["csv_type"])
->setEntityName($c["entity_name"])
->setDispName($c["disp_name"])
->setFieldName($c["field_name"])
->setReferenceFieldName($c["reference_fi...
->setEnabled($c["enabled"])
->setSortNo($next_sort_no);
$this->em->persist($Csv);
$this->em->flush($Csv);
}
$this->em->commit();
}
public function down(Schema $schema) : void { }
/**
* dtb_csvをCsvTypeで絞り込み、次のsort_noの返却する。
* @param CsvType $CsvType
* @return int
*/
private function getCsvNextSortNo(CsvType $CsvType)
{
$Csv = $this->CsvRepository->findOneBy(["CsvType...
return $Csv->getSortNo() + 1;
}
}
以下のコマンドでそれぞれ実行できます。
# 雛形の作成
$ bin/console doctrine:migrations:generate
# ステータス確認
$ bin/console doctrine:migrations:status
# 実行
$ bin/console doctrine:migrations:migrate
# バージョンを指定して実行
$ bin/console doctrine:migrations:execute 20190813162700...
# バージョンを指定して戻す
$ bin/console doctrine:migrations:execute 20190813162700...
終了行:
[[EC-CUBEめも]]
こちらのページを参考にさせていただきました。~
ありがとうございます。~
[[[EC-CUBE4] コピペして少し修正して使える INSERT dtb_csv(...
商品CSVダウンロードについては以下で実現できますが、アップ...
直接SQLを叩いて dtb_csv にデータを追加しても実現できます...
以下のようにファイルを作成します。~
app/DoctrineMigrations/Version20190813162700.php
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
use Doctrine\ORM\EntityManager;
use Eccube\Entity\Csv;
use Eccube\Entity\Master\CsvType;
use Eccube\Repository\CsvRepository;
use Eccube\Repository\Master\CsvTypeRepository;
use Symfony\Component\DependencyInjection\ContainerAware...
use Symfony\Component\DependencyInjection\ContainerInter...
/**
* 商品CSVに商品区分を追加する
*/
final class Version20190813162700 extends AbstractMigrat...
{
/** @var ContainerInterface */
private $container;
/** @var EntityManager */
private $em;
/** @var CsvRepository */
private $CsvRepository;
/** @var CsvTypeRepository */
private $CsvTypeRepository;
/** @var array */
private $CsvType;
public function setContainer(ContainerInterface $con...
{
$this->container = $container;
$this->em = $this->container->get('doctrine.orm....
$this->CsvRepository = $this->em->getRepository(...
$this->CsvTypeRepository = $this->em->getReposit...
$this->CsvType["Product"] = $this->CsvTypeRepos...
$this->CsvType["Customer"] = $this->CsvTypeRepos...
$this->CsvType["Order"] = $this->CsvTypeRepos...
$this->CsvType["Shipping"] = $this->CsvTypeRepos...
$this->CsvType["Category"] = $this->CsvTypeRepos...
}
public function up(Schema $schema) : void
{
// INSERT dtb_csv したい内容
$arr_insert_csv = [
[
"csv_type" => $this->CsvType["Product...
"entity_name" => "Eccube\\Entity\\Produc...
"disp_name" => "商品区分", ...
"field_name" => "ProductSize", ...
"reference_field_name" => "id", ...
"enabled" => true ...
]
];
$this->em->beginTransaction();
foreach($arr_insert_csv as $c){
$next_sort_no = $this->getCsvNextSortNo($c["...
$Csv = new Csv();
$Csv
->setCsvType($c["csv_type"])
->setEntityName($c["entity_name"])
->setDispName($c["disp_name"])
->setFieldName($c["field_name"])
->setReferenceFieldName($c["reference_fi...
->setEnabled($c["enabled"])
->setSortNo($next_sort_no);
$this->em->persist($Csv);
$this->em->flush($Csv);
}
$this->em->commit();
}
public function down(Schema $schema) : void { }
/**
* dtb_csvをCsvTypeで絞り込み、次のsort_noの返却する。
* @param CsvType $CsvType
* @return int
*/
private function getCsvNextSortNo(CsvType $CsvType)
{
$Csv = $this->CsvRepository->findOneBy(["CsvType...
return $Csv->getSortNo() + 1;
}
}
以下のコマンドでそれぞれ実行できます。
# 雛形の作成
$ bin/console doctrine:migrations:generate
# ステータス確認
$ bin/console doctrine:migrations:status
# 実行
$ bin/console doctrine:migrations:migrate
# バージョンを指定して実行
$ bin/console doctrine:migrations:execute 20190813162700...
# バージョンを指定して戻す
$ bin/console doctrine:migrations:execute 20190813162700...
ページ名: