2016-12-25 5 views
3

Я нахожусь в новом в Laravel. Я хочу делать динамические запросы с помощью laravel query builder.
Обычно я могу сделать динамические запросы в PHPLaravel dynamic где запросы с помощью Query Builder

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

Если где положение является нулевые запросы будут

SELECT * FROM $tbl 

Если где положение не нулевые запросы будут

SELECT * FROM $tbl WHERE hello = "world" 

Laravel ОРМ работы штраф за то, где пункт, если имеется ключ и значение

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

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

ответ

1

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

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

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

+0

С удовольствием узнаем, что мой ответ полезен. –

0

Вы можете приковать 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(); 
+0

Используя этот метод, вы можете добавить цепочку в запрос. –

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

  • Нет связанных вопросов^_^