When developing with a Symfony-based EC-CUBE online shop system, I searched for solutions to the errors that occurred, so I will leave them on my blog as a memorandum.
I had to issue a little heavy SQL, so when I tried to process it with ORM iterate, the following error occurred.
Iterate with fetch join in class Eccube\Entity\ProductClass using association Product not allowed.
I found a description that leads to a solution in Git.
→Iterate with fetch join in subquery
Iterate with fetch join in class ~ not allowed.Error resolution
To summarize the Git statement, distinct
.
I was able to solve it by executing distinct
for select
.
By the way, distinct
is an instruction to combine duplicate records into one.
Resolved code
$qb->select('p, pc') ->distinct(); $result = $qb->iterate(); …
Cause
The above error seems to occur when joining in the Entity to be acquired.
The actual Entity part is below.(EC-CUBE src)
/** * @var \Doctrine\Common\Collections\Collection * * @ORM\OneToMany(targetEntity="Eccube\Entity\ProductClass", mappedBy="Product", cascade={"persist","remove"}) */ private $ProductClasses;
This is an example of joining ProductClass
in Entity/Product.php
. As mentioned above, you need to distinct()
if you are joining.