我已经将所有where子句保存在一个变量中,并且我试图在laravel查询中加入该变量,但无法正常工作。这是我的代码
$where .= "";
$where .= '->where("product_details.title", '.$request->title.')';
$where .= '->where("product_details.id", '.$request->id.')';
$results = DB::table('product_details').'$where'.->get();
如何在查询中使用变量?
答案 0 :(得分:2)
通过使用 if条件语句进行动态查询
$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();
答案 1 :(得分:1)
我不确定您为什么要这样做。以下应该可以正常工作。
DB::table('product_details')
->where([
'product_details.title' => $request->title
'product_details.id' => $request->id
])
->get();
现在,假设您可能并不总是从请求中获得标题或ID,也可以这样做
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();
答案 2 :(得分:0)
这将不起作用,因为您正在以字符串形式保存文本,并且输出将以字符串形式存在,因此您需要将其转换为eval。
$results = DB::table('product_details') . eval ($where) .->get();