バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > ArrayCollectionで複数件取得できるはずが1件しか取得できない

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
emotion
投稿日時: 2023/12/11 12:19
対応状況: −−−
新米
登録日: 2023/4/26
居住地:
投稿: 9
ArrayCollectionで複数件取得できるはずが1件しか取得できない
[EC-CUBE]     4.1.2-p1
[レンタルサーバ] レンタルサーバ名
[OS]         使用しているOS名、バージョン
[PHP]         7.4.30(サーバ)7.4.26 (ローカル)
[データベース]     MySQL
[WEBサーバ]     使用しているWEBサーバ名、バージョン
[ブラウザ]     使用しているブラウザ名、バージョン
[導入プラグインの有無] プラグインあり
[カスタマイズの有無] カスタマイズあり
[現象]

商品テーブルにORMで紐づく、
商品詳細テーブルを作成し、

商品テーブルのEntity↓
/**
* @var \Doctrine\Common\Collections\Collection|ProductDetail[]
*
* @ORM\OneToMany(targetEntity="Customize\Entity\ProductDetail", mappedBy="Product", cascade={"persist","remove"})
*
*/
private $ProductDetails;


商品詳細テーブルのEntity↓
/**
* @var \Customize\Entity\Product
*
* @ORM\ManyToOne(targetEntity="Customize\Entity\Product", inversedBy="ProductDetails")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="product_id", referencedColumnName="id")
* })
*/
private $Product;

としました。(ProductImageを参考に構成)
get, setも通常通り作成し、qbでもきちんとaddSelectとleftJoinをしてデータを取得しているのに、なぜか商品テーブルのデータを取得したときに、
紐づく商品詳細データがfindByで取得した場合は2件取得できるのに対して、Collectionでは1件しか取得できません。


構成的にはProductImageと全く同じはずなのに
なぜデータが1件しか取得できないかが不明です。
お分りの方いらっしゃったらアドバイスぜひ宜しくお願い致します。

shinra
投稿日時: 2023/12/11 15:30
対応状況: −−−
一人前
登録日: 2017/9/2
居住地:
投稿: 124
Re: ArrayCollectionで複数件取得できるはずが1件しか取得できない
商品詳細テーブルのEntity↓
/**
* @var \Customize\Entity\Product
*
* @ORM\ManyToOne(targetEntity="Customize\Entity\Product", inversedBy="ProductDetails")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="product_id", referencedColumnName="id")
* })
*/
private $Product;


上記ですが、Customize\Entity\ProductではなくEccube\Entity\Product
じゃないでしょうか?
一度確認して貰えればと思います
emotion
投稿日時: 2023/12/11 16:05
対応状況: −−−
新米
登録日: 2023/4/26
居住地:
投稿: 9
Re: ArrayCollectionで複数件取得できるはずが1件しか取得できない
商品テーブルをカスタマイズ領域に再構築しているので
Customize\Entity\Productで合っています。
yuh
投稿日時: 2023/12/11 21:34
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: ArrayCollectionで複数件取得できるはずが1件しか取得できない
getter、setter部分ってどうなってますか?


----------------


http://ec-lab.net/

fukuoka
投稿日時: 2023/12/12 18:44
対応状況: −−−
半人前
登録日: 2022/8/9
居住地:
投稿: 19
Re: ArrayCollectionで複数件取得できるはずが1件しか取得できない
Customizeに新たに作っているということであれば、もしかしたらArrayCollectionの初期化の部分の可能性はありませんでしょうか?
ProductImageの場合はこのような処理をしていますがいかがでしょうか?

public function __construct()
        {
            $this->ProductImage = new \Doctrine\Common\Collections\ArrayCollection();
        }
emotion
投稿日時: 2023/12/13 10:58
対応状況: −−−
新米
登録日: 2023/4/26
居住地:
投稿: 9
Re: ArrayCollectionで複数件取得できるはずが1件しか取得できない
__constructにArrayCollectionの初期化も追加しています。
getter、setterもProductImageと全く同じ作りにしています。
k.nakayama
投稿日時: 2023/12/14 17:28
対応状況: −−−
常連
登録日: 2019/10/11
居住地:
投稿: 52
Re: ArrayCollectionで複数件取得できるはずが1件しか取得できない
Collectionとのことなので関係ないかもしれませんが、
「qbでもaddSelectとleftJoinをしてデータを取得している」というのが少し気になったのですが、qbで取得されているあたりのコードを共有してもらうことはできますか?


----------------
----------------
開発公式インテグレートパートナー U-Mebius

emotion
投稿日時: 2023/12/26 13:53
対応状況: −−−
新米
登録日: 2023/4/26
居住地:
投稿: 9
Re: ArrayCollectionで複数件取得できるはずが1件しか取得できない
$qb = $this->createQueryBuilder('p')
->addSelect('pd')
->leftJoin('p.ProductDetails', 'pd');

qbの部分はこんな感じです。
k.nakayama
投稿日時: 2023/12/27 8:56
対応状況: −−−
常連
登録日: 2019/10/11
居住地:
投稿: 52
Re: ArrayCollectionで複数件取得できるはずが1件しか取得できない
$qbにwhereなどでの絞り込みは続いていないでしょうか?

絞り込みがあった場合、Collectionの要素数が少なく取得されることは可能性があります。


----------------
----------------
開発公式インテグレートパートナー U-Mebius

sw_sn
投稿日時: 2023/12/27 19:40
対応状況: −−−
常連
登録日: 2018/5/25
居住地:
投稿: 49
Re: ArrayCollectionで複数件取得できるはずが1件しか取得できない
参考にならないかも知れませんが、私だったら以下を試してみます。

・devモードのprofilerでSQLを確認する
・$queryBuilder->getQuery()->getSQL()でSQLを確認する
・以下のようにEAGERを設定して、データの先読みを強制してみる
 @ORM\ManyToOne(targetEntity="Customize\Entity\Product", inversedBy="ProductDetails", fetch="EAGER")
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,886名です
総投稿数は110,000件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
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.