从原始MySQL查询到symfony 2
我正在尝试使用此查询获取symfony2实体:从原始MySQL查询到symfony 2,mysql,symfony,Mysql,Symfony,我正在尝试使用此查询获取symfony2实体: SELECT g . *, (SELECT Count(gc.`code`) AS `codecount` FROM giftcode gc WHERE gc.`gift_id` = g.`id` AND gc.`provided` IS NULL GROUP BY gc.`gift_id`) AS gcodecount FROM g
SELECT g . *,
(SELECT Count(gc.`code`) AS `codecount`
FROM giftcode gc
WHERE gc.`gift_id` = g.`id`
AND gc.`provided` IS NULL
GROUP BY gc.`gift_id`) AS gcodecount
FROM gift g
WHERE Now() >= g.validbegin
AND Now() <= g.validend
您可以尝试以下方法:
$query=$entityManager->createQuery("SELECT g
FROM gift g
WHERE Now() >= g.validbegin
AND Now() <= g.validend
AND gc.provided IS NULL");
$list=$query->getResults();
您的实体是否定义了相应的关系?请您发布您的实体类(礼品和礼品代码)我不处理此实体的实体之间的关系。我只是想知道我是否可以将原始查询直接“翻译”到symfony以获取礼品实体。无论如何,给我30秒,我会添加实体
namespace Done\PunctisBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Gift
*
* @ORM\Table(name="gift")
* @ORM\Entity
*/
class Gift
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="description", type="text", nullable=true)
*/
private $description;
/**
* @var string
*
* @ORM\Column(name="redemption", type="string", nullable=true)
*/
private $redemption;
/**
* @var \Date $validbegin
*
* @ORM\Column(name="validbegin", type="date", nullable=true)
*/
private $validbegin;
/**
* @var \Date $validend
*
* @ORM\Column(name="validend", type="date", nullable=true)
*/
private $validend;
/**
* @var integer
*
* @ORM\Column(name="amount", type="integer", nullable=true)
*/
private $amount;
/**
* @var integer
*
* @ORM\Column(name="points", type="integer")
*/
private $points;
/**
* @var boolean
*
* @ORM\Column(name="verified", type="boolean")
*/
private $verified;
/**
* @var string
*
* @ORM\Column(name="image", type="string", length=255)
*/
private $image;
/**
* @var string
*
* @ORM\Column(name="price", type="integer")
*/
private $price;
/**
* @var string
*
* @ORM\Column(name="discount", type="integer")
*/
private $discount;
/**
* @var \Done\PunctisBundle\Entity\Brand
*
* @ORM\ManyToOne(targetEntity="Done\PunctisBundle\Entity\Brand", inversedBy="gifts")
*/
protected $brand;
/**
* @var \Done\PunctisBundle\Entity\GiftCode
*
* @ORM\OneToMany(targetEntity="Done\PunctisBundle\Entity\GiftCode", mappedBy="gift", cascade={"persist"})
*/
protected $codes;
/**
* Constructor
*/
public function __construct()
{
$this->codes = new \Doctrine\Common\Collections\ArrayCollection();
$this->verified = false;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Gift
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set description
*
* @param string $description
* @return Gift
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* Get description
*
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* Set redemption
*
* @param string $redemption
* @return Gift
*/
public function setRedemption($redemption)
{
$this->redemption = $redemption;
return $this;
}
/**
* Get redemption
*
* @return string
*/
public function getRedemption()
{
return $this->redemption;
}
/**
* Set points
*
* @param integer $points
* @return Gift
*/
public function setPoints($points)
{
$this->points = $points;
return $this;
}
/**
* Get points
*
* @return integer
*/
public function getPoints()
{
return $this->points;
}
/**
* Set amount
*
* @param integer $amount
* @return Gift
*/
public function setAmount($amount)
{
$this->amount = $amount;
return $this;
}
/**
* Get amount
*
* @return integer
*/
public function getAmount()
{
return $this->amount;
}
/**
* Set verified
*
* @param boolean $verified
* @return Gift
*/
public function setVerified($verified)
{
$this->verified = $verified;
return $this;
}
/**
* Get verified
*
* @return boolean
*/
public function getVerified()
{
return $this->verified;
}
/**
* Set image
*
* @param string $image
* @return Gift
*/
public function setImage($image)
{
$this->image = $image;
return $this;
}
/**
* Get image
*
* @return string
*/
public function getImage()
{
return $this->image;
}
/**
* Set price
*
* @param integer $price
* @return Gift
*/
public function setPrice($price)
{
$this->price = $price;
return $this;
}
/**
* Get price
*
* @return integer
*/
public function getPrice()
{
return $this->price;
}
/**
* Set discount
*
* @param integer $discount
* @return Gift
*/
public function setDiscount($discount)
{
$this->discount = $discount;
return $this;
}
/**
* Get discount
*
* @return integer
*/
public function getDiscount()
{
return $this->discount;
}
/**
* Set brand
*
* @param \Done\PunctisBundle\Entity\Brand $brand
* @return Gift
*/
public function setBrand(\Done\PunctisBundle\Entity\Brand $brand = null)
{
$this->brand = $brand;
return $this;
}
/**
* Get brand
*
* @return \Done\PunctisBundle\Entity\Brand
*/
public function getBrand()
{
return $this->brand;
}
/**
* Add codes
*
* @param \Done\PunctisBundle\Entity\GiftCode $codes
* @return Gift
*/
public function addCode(\Done\PunctisBundle\Entity\GiftCode $codes)
{
$this->codes[] = $codes;
return $this;
}
/**
* Set validbegin
*
* @param \Date $validbegin
* @return UserInfo
*/
public function setValidbegin($validbegin)
{
$this->validbegin = $validbegin;
return $this;
}
/**
* Get validbegin
*
* @return \Date
*/
public function getValidbegin()
{
return $this->validbegin;
}
/**
* Set validend
*
* @param \Date $validend
* @return UserInfo
*/
public function setValidend($validend)
{
$this->validend = $validend;
return $this;
}
/**
* Get validend
*
* @return \Date
*/
public function getValidend()
{
return $this->validend;
}
/**
* Remove codes
*
* @param \Done\PunctisBundle\Entity\GiftCode $codes
*/
public function removeCode(\Done\PunctisBundle\Entity\GiftCode $codes)
{
$this->codes->removeElement($codes);
}
/**
* Get codes
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getCodes()
{
return $this->codes;
}
}
<?php
namespace Done\PunctisBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* GiftCode
*
* @ORM\Table(name="giftcode")
* @ORM\Entity
*/
class GiftCode
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="code", type="string", length=255)
*/
private $code;
/**
* @var \DateTime
*
* @ORM\Column(name="provided", type="datetime", nullable=true)
*/
private $provided;
/**
* @var \Done\PunctisBundle\Entity\Gift
*
* @ORM\ManyToOne(targetEntity="Done\PunctisBundle\Entity\Gift", inversedBy="codes")
*/
protected $gift;
public function __construct( )
{
$this->provided = null;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set code
*
* @param string $code
* @return GiftCode
*/
public function setCode($code)
{
$this->code = $code;
return $this;
}
/**
* Get code
*
* @return string
*/
public function getCode()
{
return $this->code;
}
/**
* Set provided
*
* @param \DateTime $provided
* @return GiftCode
*/
public function setProvided($provided)
{
$this->provided = $provided;
return $this;
}
/**
* Get provided
*
* @return \DateTime
*/
public function getProvided()
{
return $this->provided;
}
/**
* Set user
*
* @param string $user
* @return GiftCode
*/
public function setUser($user)
{
$this->user = $user;
return $this;
}
/**
* Get user
*
* @return string
*/
public function getUser()
{
return $this->user;
}
/**
* Set gift
*
* @param \Done\PunctisBundle\Entity\Gift $gift
* @return GiftCode
*/
public function setGift(\Done\PunctisBundle\Entity\Gift $gift = null)
{
$this->gift = $gift;
return $this;
}
/**
* Get gift
*
* @return \Done\PunctisBundle\Entity\Gift
*/
public function getGift()
{
return $this->gift;
}
}
$query=$entityManager->createQuery("SELECT g
FROM gift g
WHERE Now() >= g.validbegin
AND Now() <= g.validend
AND gc.provided IS NULL");
$list=$query->getResults();
$qtty= count( $gift->getCodes());