2017-09-03 23 views
0

我想更新查詢。首先,我有一個這樣的數組:學說 - 無法用多種方式更新查詢

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

命名$restaurants。我想要的是使用此數組更新restaurantIsSelected字段。這裏是我的代碼

第一種方式:

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); 
} 

這裏是我的第二個辦法:

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); 
} 

我在這兩個情況的錯誤:

Error: Expected Literal, got 'WHERE' 

什麼建議嗎?

回答

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(); 
}