2016-06-02 2 views
0

Я пытаюсь обновить таблицу.Как написать запрос с наличием нескольких условий в laravel 5

У меня есть все значения в foreach. Уникальный идентификатор - 'uuid'

Но я хотел бы обновить, если значение было изменено только. Я пытался сделать это, но не повезло.

$results = DB::table('urls') 
        ->where('uuid','=',$uuid) 
        ->orWhere('id_media', '!=',$id_media) 
        ->orWhere('region', '!=',$region) 
        ->orWhere('page', '!=',$page) 
        ->orWhere('audience', '!=',$audience) 
        ->update(array(
         'id_media' => $id_media, 
         'region'=>$region, 
         'page'=>$page, 
         'audience'=>$audience 
        )); 

Каким будет метод laravel для запроса ниже.

update my_table set 
my_col = 'newValue' 
where id = 'someKey' 
and my_col != 'newValue'; 

ответ

1

попробуйте это. найти еще в https://laravel.com/docs/5.2/queries#updates.

DB::table('my_table') 
    ->where('id', 1) 
    ->where('my_col', '!=', 'newValue') 
    ->update(['my_col' => 'newValue']); 

В вашем конкретном случае, вы должны использовать это:

DB::table('urls') 
     ->where('uuid', '=', $uuid) 
     ->where(function ($query) use ($id_media, $region, $page, $audience) { 
      $query->orWhere('id_media', '!=', $id_media) 
       ->orWhere('region', '!=', $region) 
       ->orWhere('page', '!=', $page) 
       ->orWhere('audience', '!=', $audience); 
     }) 
     ->update([ 
      'id_media' => $id_media, 
      'region' => $region, 
      'page' => $page, 
      'audience' => $audience 
     ]); 

Последнее будет производить что-то вроде этого:

update my_table set 
    my_col = 'newValue' 
where id = 'someId' and 
    (my_col1 != 'newValue1' or my_col2 != 'newValue2' or ..); 
+0

Благодаря @Ignacio Fassini, это именно то, что я хочу – sanainfotech

Смежные вопросы