作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这会生成错误的 ON
子句:
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]:
我哪里错了?
最佳答案
广告.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;
}
用户广告.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()
;
}
}
可以通过修改后的结果获得预期的结果,连接是使用自己的表元素完成的,并且已经在 UserAd 实体中添加了一个注释,它已经直接调用了表
AdController.php
...
$owner = $this->getUser();
$repository = $this->getDoctrine()->getRepository('DelivveWebBundle:UserAd');
$notifications = $repository->findByAdOwner($owner->getId());
...
关于php - 在 symfony 中选择 join with doctrine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32338834/
我是一名优秀的程序员,十分优秀!