Laravel динамический, где запросы с помощью Query Builder

Я в новом в Ларавеле. Я хочу сделать динамические, где запросы с помощью построителя запросов laravel.
Обычно я могу делать динамические запросы в php

$where = array(
'hello' => 'world'
);

function get($where = null){
if($where == "")  $where = "";
//Function which converts where clause into queries
wheretoqueries($where);  //converts where clause
$sql = "SELECT * FROM $tbl $where";
return $sql;
}
echo get($where);

Если условие where равно null, запросы будут

SELECT * FROM $tbl

Если условие where не равно NULL, запросы будут

SELECT * FROM $tbl WHERE hello = "world"

Laravel orm отлично работает для предложения where, если ключ и значение существуют

A::where($where)->get();

Если где ноль, следующий метод не будет работать

3

Решение

Попробуй это. Если переменная $ where содержит что-то, запрос будет выполнен, иначе он получит все данные из A Модель.

 function get($where = null){
if($where != null){
A::where('field_name', '=', $where)->first();
}else{
A::all();
}
}

Замечания: если ваш запрос возвращает более одного значения, вы должны использовать метод get () в конце построителя запроса вместо first ();
Ссылка: https://laravel.com/docs/5.3/queries#where-clauses

1

Другие решения

Вы можете связать where запросы как:

$query = Model::query();

if (!empty($value)) {
$query->where('column', $value);
}

$query->get();

ИЛИ ЖЕ

Ты можешь использовать when метод как:

Model::when($value, function ($query) use ($value) {
return $query->where('column', $value);
})
->get();
2

По вопросам рекламы [email protected]