2017-02-18 56 views
0

在我的数据库中,我有许多产品具有datecreated属性。 我想在刷新我的主页之后的一段时间(如10或20天)后删除任何产品。过期后从数据库中删除错误

这是我的控制器:

public function indexAction() 
{ 
    $datenow = new \DateTimeImmutable(); 
    $datenowStringType = $datenow->format('Y-m-d'); 

    $em = $this->getDoctrine()->getManager(); 
    $products = $em->getRepository('ProductBundle:Product')->findAll(); 

    foreach ($products as $produit) { 
     $CreatedDate = $produit->getCreatedDate(); 
     $CreatedDate_StringType = $CreatedDate->format('Y-m-d'); 

     $duree = '+'.$produit->getDuree(); 
     $date_fin_duree = date('Y-m-d', strtotime($CreatedDate_StringType.$duree)); 

     if (strtotime($datenowStringType)<strtotime($date_fin_duree)) { 
      $em->remove($produit); 
     } 
    } 
    array_values($products); 

    return $this->render('product/index.html.twig', array(
     'products' => $products, 
    )); 
} 

有没有返回错误,但产品不会被删除。这可能是一个简单的错误,但我搜索了很多,我认为这是一个不集中。 请帮忙?

+1

你在哪里调用flush? – Cerad

+0

我打电话给我后,我删除,但他删除产品,即使条件是假的 –

+0

谢谢Rhono你有什么解决方案吗? –

回答

0
$date = ''; // calculate your date here, it should be DateTime object 
$qb = $em->createQueryBuilder(); 
$qb->delete('Product', 'p'); 
$qb->where('p.duree < :date'); 
$qb->setParameter('date', $date); 
+3

虽然这段代码是受欢迎的,并且可能会提供一些帮助,如果它包含解释](// meta.stackexchange.com/q/114762)* how *和* why *解决了这个问题,那么它会得到改善。请记住,您将来会为读者回答这个问题,而不仅仅是这个人请现在提问!请编辑您的答案以添加解释,并指出适用的限制和假设。 –