【发布时间】:2015-03-19 09:23:30
【问题描述】:
我的自定义存储库有问题。
我有 3 个实体:Client、Campaign 和 CampaignClient。
我希望获得所有不在(此)广告系列中的客户。 我的实体很简单。 客户端 -> OneMany OneMany
我的查询(我觉得我的查询是错误的,但我不知道为什么?):
->createQuery('SELECT c FROM MainBundle:Client c '
. 'LEFT JOIN MainBundle:CampaignClient cc WITH (cc.client = c.id)'
. 'WHERE cc.campaign != :id ')
->setParameter(':id', $id)
我的客户实体:
/**
* @ORM\Column(name="id", type="string", length=255)
* @ORM\Id
* @ORM\GeneratedValue(strategy="UUID")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="CampaignClient", mappedBy="client", cascade={"all"})
*/
private $campaigns;
我的活动实体:
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="CampaignClient", mappedBy="campaign", cascade={"all"})
*/
private $clients;
还有我的 CampaignClient 实体:
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Client", inversedBy="campaigns")
*/
private $client;
/**
* @ORM\ManyToOne(targetEntity="Campaign", inversedBy="clients")
*/
private $campaign;
编辑:我使用 MySql
我尝试通过代码询问我的sql:
SELECT * FROM client c
LEFT JOIN campaignclient cc ON c.id = cc.client_id
WHERE cc.campaign_id = 1
GROUP BY c.id;
没关系,但如果我将 Where clausule 更改为 cc.campaign_id = NULL 或 cc.camaign_id != 1 它会返回 0 条记录。
【问题讨论】:
标签: sql symfony repository