質問 > 管理機能 > 新規追加したテーブルからのデータ読み込みについて |
管理機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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 にて作成しています |
umebius |
投稿日時: 2021/2/14 12:05
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 新規追加したテーブルからのデータ読み込みについて テーブルはどうやって作られたのでしょうか?
bin/console eccube:schema:updateによってでしょうか? |
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を使用した際に何処がおかしいのかを お教え頂ける事を期待しております |
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(); と修正したところエラーは出なくなりました しかし、返ってくるのは空の配列 ” [] ” になります まだ他に何処か問題があるのでしょうか |
umebius |
投稿日時: 2021/2/10 9:03
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 新規追加したテーブルからのデータ読み込みについて ->select('name')
のところは、->select('c.name')ではないでしょうか。 テーブル1つからSELECTする場合でも省略はできないです。
|
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 の方にも間違った設定があるのでしょうか? どうぞよろしくお願い致します |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |