dssu33392 2015-09-01 18:46
浏览 26
已采纳

在symfony中选择带有doctrine的连接

This is generating the wrong ON clause:

public function findByAdOwner($ownerId)
{
    $qb = $this->getEntityManager()->createQueryBuilder('n');

    return $qb->select('n')
              ->from('DelivveWebBundle:UserAd', 'n')
              ->join('DelivveWebBundle:Ad', 'ad', "WITH", "n.ad = ad.id")
              ->where('ad.owner = :ownerId')
              ->setParameter('ownerId', $ownerId)
              ->getQuery()
              ->getResult()
    ;
}

[2/2] DBALException: An exception occurred while executing 'SELECT u0_.status AS status0, u0_.user_id AS user_id1, u0_.ad_id AS ad_id2 FROM user_ad u0_ INNER JOIN my_ad m1_ LEFT JOIN Deliver d2_ ON m1_.id = d2_.id LEFT JOIN Sender s3_ ON m1_.id = s3_.id AND (u0_.ad_id = m1_.id) WHERE m1_.user_id = ?' with params [1]:

Where am I going wrong?

  • 写回答

1条回答 默认 最新

  • dongyumiao5210 2015-09-01 19:06
    关注

    Ad.php

    class Ad
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;
    
        /**
         * @var ArrayCollection
         *
         * @ORM\OneToMany(targetEntity="UserAd", mappedBy="ad")
         */
        protected $interestedUsers;
    }
    

    UserAd.php

    /*     *@ORM\Entity(repositoryClass="Delivve\WebBundle\Entity\UserAdRepository")
         */
            class UserAd
            {
                /**
                 * @ORM\Id()
                 * @ORM\ManyToOne(targetEntity="User", inversedBy="interestInAds")
                 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
                 **/
                protected $user;
    
                /**
                 * @ORM\Id()
                 * @ORM\ManyToOne(targetEntity="Ad", inversedBy="interestedUsers")
                 * @ORM\JoinColumn(name="ad_id", referencedColumnName="id")
                 **/
                protected $ad;
            }
    

    UserAdRepository.php

    class UserAdRepository extends EntityRepository
    {
        public function findByAdOwner($ownerId)
        {
            $qb = $this->getEntityManager()->createQueryBuilder('n');
    
            return $qb->select('n')
                ->from('DelivveWebBundle:UserAd', 'n')
                ->join('n.ad', 'ad')
                ->where('ad.owner = :ownerId')
                ->setParameter('ownerId', $ownerId)
                ->getQuery()
                ->getResult()
            ;
       }
    }
    

    could have the result expected with the amendment that follows the join is done with the own table element with already hesitate a note in UserAd entity it already makes a direct call table

    AdController.php

    ...
    $owner = $this->getUser();
    
    $repository = $this->getDoctrine()->getRepository('DelivveWebBundle:UserAd');
    
    $notifications = $repository->findByAdOwner($owner->getId());
    ...
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么