Laravel где :: модель, как добавить несколько операторов - PullRequest
1 голос
/ 28 сентября 2019

Так, как я могу добавить несколько операторов для запроса в :: где модель.

На самом деле это выглядит так: certs :: where ('unique', '=', $ newUnique) -> get ()

мне нужно что-то вроде этого:

certs::where('unique, num', '=', $newUnique,$key )->get()

, поэтому в sql это выглядит так

Select * From certs Where unique = $newUnique AND num = $key

Мне нужно, чтобы проверить, нужно ли обновлять или вставлять данные.

Ответы [ 4 ]

2 голосов
/ 28 сентября 2019

Просто добавьте другой оператор where

certs::where('unique', $newUnique)->where('num', $key)->get()

Например,

App\User::where('first_name', 'John')->where('last_name', 'Doe')->toSql();

Получится

"select * from `users` where `first_name` = ? and `last_name` = ?"

Надеюсь, это поможет

1 голос
/ 28 сентября 2019

Laravel позволяет использовать несколько операторов для функции «где» в модели, передавая массив условий.

Приведенный ниже код можно использовать, если вы применяете операции «и» и «=» для всех данных.

$conditions = ['unique'=>$newUnique,'num'=>$key];
Certs::where($conditions)->get();

Иначе, если вы хотите использовать различные операции с условием «и», используйте приведенный ниже код.

$conditions = [
     ['unique','=',$newUnique],['num','!=',$key]
];
Certs::where($conditions)->get();

Также вы можете использовать приведенный ниже код для «и» и «или»условия.

Certs::where(function($query) use ($newUnique, $key]){ 
    $query->where('unique', $newUnique);
    $query->orWhere('num', $key);

})->get();

Аналогично, вы можете использовать orWhere (), whereColumn (), whereBetween () и другие функции построителя запросов.

1 голос
/ 28 сентября 2019

Вы можете сделать что-то вроде этого:

certs::where(['unique'=>$newUnique, 'num' => $key])->get()
1 голос
/ 28 сентября 2019

Может быть сложно, если вместо И будет ИЛИ, поэтому вы всегда должны предпочитать

для И

Certs::where(function($query) use ([$newUnique, $key]){ 
    $query->where('first_name', 'John')->where('last_name', 'Doe');
})->get();

для ИЛИ

Certs::where(function($query) use ([$newUnique, $key]){ 
    $query->where('first_name', 'John')->orWhere('last_name', 'Doe');
})->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...