2017-09-03 15 views
0

クエリを更新したいと思います。まず、次のような配列があります。Doctrine - 複数の方法でクエリを更新できません

array:5 [▼ 
    0 => 2 
    1 => 9 
    2 => 10 
    3 => 531 
    4 => 635 
] 

$restaurantsという配列があります。私が欲しいのは、この配列でレストランIsoSelectedフィールドを更新するだけです。ここに私のコード

ある

最初の方法:ここ

public function resetChosenRestaurants(array $restaurants) { 
    dd($restaurants); 
    $query = $this->_em->createQueryBuilder(); 
    $query 
     ->update($this->entityClass, "Restaurants") 
     ->set("Restaurants.restaurantIsSelected", NULL) 
     ->where($query->expr()->in('Restaurants.restaurantId', $restaurants)) 
     ->getQuery()->getSQL(); 
    dd($query); 
} 

され、私の第二の方法:

Error: Expected Literal, got 'WHERE' 

どれ提案:

public function resetChosenRestaurants(array $restaurants) { 

    $query = $this->_em->createQueryBuilder(); 
    $query 
    ->update($this->entityClass, "Restaurants") 
     ->set("Restaurants.restaurantIsSelected", NULL) 
     ->where("Restaurants.restaurantId IN :restaurantId") 
     ->setParameter("restaurantId", $restaurants) 
     ->getQuery()->execute(); 
    dd($query); 
} 

が、私は両方の状況でエラーが発生しましたか?

答えて

0

はPARAMとそれを実行します。

public function resetChosenRestaurants(array $restaurants) { 
    $query = $this->_em->createQueryBuilder(); 
    $query 
     ->update($this->entityClass, "Restaurants") 
     ->set("Restaurants.restaurantIsSelected", ':null') 
     ->where($query->expr()->in('Restaurants.restaurantId', $restaurants)) 
     ->setParameter('null',null) 
     ->getQuery()->execute(); 
} 
関連する問題