バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 新規追加したテーブルからのデータ読み込みについて

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
HelloBetty
投稿日時: 2021/2/10 7:21
対応状況: −−−
新米
登録日: 2021/2/10
居住地:
投稿: 10
新規追加したテーブルからのデータ読み込みについて
v4.0.5で新規に企業情報のテーブルを作り商品詳細などでデータを読み出したいのですが
うまく読み込めていません
どこがおかしいのかお教え頂けますでしょうか


## Customize/Entity/Corporate.php

namespace Customize\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;

/**
* Corporate
*
* @ORM\Table(name="dtb_corporate")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="discriminator_type", type="string", length=255)
* @ORM\HasLifecycleCallbacks()
* @ORM\Entity(repositoryClass="Customize\Repository\CorporateRepository")
*/
class Corporate extends \Eccube\Entity\AbstractEntity
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", options={"unsigned":true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;

/**
* @var string
*
* @ORM\Column(name="name", type="string", length=32)
*/
private $name;

/**
* @var integer
*
* @ORM\Column(name="status", type="integer", length=1)
*/
private $status;

/**
* Get id.
*
* @return Id
*/
public function getId()
{
return $this->id;
}

/**
* Set name.
*
* @param $name
*
* @return this
*/
public function setName($name = null)
{
$this->name = $name;

return $this;
}

/**
* Get name.
*
* @return name
*/
public function getName()
{
return $this->name;
}

/**
* Set status.
*
* @param $status
*
* @return this
*/
public function setStatus($status = null)
{
$this->status = $status;

return $this;
}

/**
* Get status.
*
* @return status
*/
public function getStatus()
{
return $this->status;
}
}



## Customize/Repository/CorporateRepository.php

namespace Customize\Repository;

use Doctrine\ORM\QueryBuilder;
use Customize\Entity\Corporate;
use Eccube\Repository\AbstractRepository;
use Symfony\Bridge\Doctrine\RegistryInterface;

/**
* CorporateRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class CorporateRepository extends AbstractRepository
{
/**
* ProductReviewRepository constructor.
*
* @param RegistryInterface $registry
*/
public function __construct(RegistryInterface $registry)
{
parent::__construct($registry, Corporate::class);
}

/**
* @param integer $Corporate_id
*
* @return ArrayCollection|array
*/
public function getCorporateData($Corporate_id)
{
$qb = $this->createQueryBuilder('c')
->select('name')
->where('c.id = :id')
->setParameter('id', $Corporate_id);

$corporate = $qb->getQuery();

return $corporate;
}
}



## src/Eccube/Controller/ProductController.php 内
下記の行を追加しています


〜〜 既存行 中略 〜〜

use Customize\Repository\CorporateRepository;
use Customize\Entity\Corporate;

class ProductController extends AbstractController
{
〜〜 既存行 中略 〜〜

/**
* @var Corporate
*/
protected $CorporateRepository;

private $title = '';

/**
* ProductController constructor.
*

〜〜 既存行 中略 〜〜

* @param CorporateRepository $corporateRepository
*/
public function __construct(

〜〜 既存行 中略 〜〜

CorporateRepository $corporateRepository
) {

〜〜 既存行 中略 〜〜

$this->corporateRepository = $corporateRepository;
}



この状態で public function detail 内で
 $corporate = $this->corporateRepository->getCorporateData(1);
と呼び出したところ、下記の結果が返ってきておりますが
登録したデータは返ってきていません


Query {#1764 ▼
-_state: 2
-_parsedTypes: []
-_dql: "SELECT name FROM Customize\Entity\Corporate c WHERE c.id = :id"
-_parserResult: null
-_firstResult: null
-_maxResults: null
-_queryCache: null
-_expireQueryCache: false
-_queryCacheTTL: null
-_useQueryCache: true
#parameters: ArrayCollection {#1762 ▼
-elements: array:1 [▼
0 => Parameter {#1763 ▼
-name: "id"
-value: 1
-type: "integer"
-typeSpecified: false
}
]
}
#_resultSetMapping: null
#_em: EntityManager {#191 …11}
#_hints: []
#_hydrationMode: 1
#_queryCacheProfile: null
#_expireResultCache: false
#_hydrationCacheProfile: null
#cacheable: false
#hasCache: false
#cacheRegion: null
#cacheMode: null
#cacheLogger: null
#lifetime: 0
}

CorporateRepository.php 内の
 $corporate = $qb->getQuery();
に ->getResult() が必要なのかと思い付けてみましたところ
 Error: 'name' is not defined.
となります
デーブルが作成されていたので問題ないかと思っておりましたが
Corporate.php の方にも間違った設定があるのでしょうか?


どうぞよろしくお願い致します
umebius
投稿日時: 2021/2/10 9:03
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 新規追加したテーブルからのデータ読み込みについて
->select('name')
のところは、->select('c.name')ではないでしょうか。

テーブル1つからSELECTする場合でも省略はできないです。


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

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

HelloBetty
投稿日時: 2021/2/10 9:41
対応状況: −−−
新米
登録日: 2021/2/10
居住地:
投稿: 10
Re: 新規追加したテーブルからのデータ読み込みについて
ありがとうございます

$qb = $this->createQueryBuilder('c')
->select('c.name')
->where('c.id = :id')
->setParameter('id', $Corporate_id);

$corporate = $qb->getQuery()->getResult();

と修正したところエラーは出なくなりました
しかし、返ってくるのは空の配列 ” [] ” になります

まだ他に何処か問題があるのでしょうか
HelloBetty
投稿日時: 2021/2/14 7:49
対応状況: −−−
新米
登録日: 2021/2/10
居住地:
投稿: 10
Re: 新規追加したテーブルからのデータ読み込みについて
一旦、QueryBuilderでの呼び出しは諦めました

ProductController.php の use 群に
 use Doctrine\ORM\Query\ResultSetMapping;
を追加し

$sql = '
select
c.name
from cms_corporate c
where c.id = :ID
';

$rsm = new ResultSetMapping();;
$rsm->addScalarResult('name', 'name');
$query = $this->entityManager->createNativeQuery($sql, $rsm);
$query->setParameter(':ID', 1);
$corporate = $query->getResult();

にて呼び出すようにしました

引き続き、QueryBuilderを使用した際に何処がおかしいのかを
お教え頂ける事を期待しております
umebius
投稿日時: 2021/2/14 12:05
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 新規追加したテーブルからのデータ読み込みについて
テーブルはどうやって作られたのでしょうか?
bin/console eccube:schema:updateによってでしょうか?
HelloBetty
投稿日時: 2021/2/14 13:08
対応状況: −−−
新米
登録日: 2021/2/10
居住地:
投稿: 10
Re: 新規追加したテーブルからのデータ読み込みについて
テーブルはよく書かれている手順の通りに

bin/console eccube:generate:proxies
bin/console doctrine:schema:update --dump-sql

表示されるSQLを確認の上

bin/console doctrine:schema:update --dump-sql --force

にて作成しています
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.