Symfony2在刷新之后/之前将其他行设置为0
这就是我遇到的问题 我有一个表,其中包含一个名为Symfony2在刷新之后/之前将其他行设置为0,symfony,doctrine-orm,Symfony,Doctrine Orm,这就是我遇到的问题 我有一个表,其中包含一个名为的列,显示在\u主页上,只有一行应该设置为1,其余的都应该设置为0。我正在尝试向数据库中添加一个新行,该行应设置为1,将以前的行设置为1到0 在MySQL中,我知道这可以通过在插入之前发布更新来实现: UPDATE table_name SET shown_on_homepage = 0 这是我的实体: class FeaturedPerson { /** * @var integer * * @ORM\Column(name="id",
的列,显示在\u主页上
,只有一行应该设置为1,其余的都应该设置为0。我正在尝试向数据库中添加一个新行,该行应设置为1,将以前的行设置为1到0
在MySQL中,我知道这可以通过在插入之前发布更新来实现:
UPDATE table_name SET shown_on_homepage = 0
这是我的实体:
class FeaturedPerson {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="content", type="string", length=2500, nullable=false)
*/
private $content;
/**
* @var \DateTime
*
* @ORM\Column(name="date_updated", type="datetime")
*/
private $dateUpdated;
/**
* @var bool
*
* @ORM\Column(name="shown_on_homepage", type="boolean", nullable=false)
*/
private $isShownOnHomepage;
//...
public function getIsShownOnHomepage() {
return $this->isShownOnHomepage;
}
public function setIsShownOnHomepage($isShownOnHomepage) {
$this->isShownOnHomepage = $isShownOnHomepage;
return $this;
}
}
对于控制器,我已经:
$featured = new FeaturedPerson();
$featured->setContent('Test content.');
$featured->setDateUpdated('01/02/2013.');
$featured->setIsShownOnHomepage(TRUE);
$em = $this->getDoctrine()->getManager();
$em->persist($featured);
$em->flush();
它确实添加了新行,但是主页上显示的
设置为1的那一行仍然保留着它。我已经研究过了,但我找不到实现这一点的方法,希望您能帮助我。您可以在控制器中现有代码之前执行查询:
$queryBuilder = $this->getDoctrine()->getRepository('YourBundleName:FeaturedPerson')->createQueryBuilder('qb');
$result = $queryBuilder->update('YourBundleName:FeaturedPerson', 'd')
->set('d.isShownOnHomepage', $queryBuilder->expr()->literal(0))
->where('d.isShownOnHomepage = :shown')
->setParameter('shown', 1)
->getQuery()
->execute();
将“YourBundleName”更改为您的捆绑包名称