сохранить предложение where в переменной и использовать его в запросе laravel - PullRequest
0 голосов
/ 17 января 2019

Я сохранил все мои предложения where в переменной, и я пытаюсь объединить эту переменную в запросе laravel, но он не работает. Вот мой код

$where .= "";
$where .= '->where("product_details.title", '.$request->title.')'; 
$where .= '->where("product_details.id", '.$request->id.')'; 
$results = DB::table('product_details').'$where'.->get();

Как использовать переменную внутри запроса?

Ответы [ 3 ]

0 голосов
/ 17 января 2019

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

$results = DB::table('product_details')

if($request->title) {
   $results->where("product_details.title", $request->title);
}
if($request->id) {
   $results->where("product_details.id", $request->id);
}
$result->get();
0 голосов
/ 17 января 2019

Я не уверен, почему вы хотите это сделать. Следующее должно просто работать.

DB::table('product_details')
    ->where([
        'product_details.title' => $request->title
        'product_details.id' => $request->id
    ])
    ->get(); 

Теперь, допустим, у вас не всегда есть заголовок или идентификатор из запроса, вы также можете сделать это

DB::table('product_details')
    ->when($request->title, function ($query, $title) {
        return $query->where('product_details.title', $title);
    })
    ->when($request->id, function ($query, $id) {
        return $query->where('product_details.id', $id);
    })
    ->get();
0 голосов
/ 17 января 2019

это не будет работать, потому что вы сохраняете текст в строку, а вывод будет в строке, вам нужно преобразовать его в eval Попробуйте это.

$results = DB::table('product_details')  . eval ($where) .->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...