Php Laravel查询生成器:基于用户输入的where条件
这是我的Php Laravel查询生成器:基于用户输入的where条件,php,laravel,laravel-4,Php,Laravel,Laravel 4,这是我的print\r($\u POST) array([id]=>'123',[name]=>'.[place]=>'.[color]=>'. 其中,name、place和color是用户提交的可选字段。。。。。用户只能选择名称,位置或颜色,名称+颜色,颜色+位置,或全部三个名称+颜色+位置 如何将用户选择的这些选项的条件放置在哪里?例如,在Laravel中,我们使用以下语句选择DB table $Select_db = Db::table('mytable')
print\r($\u POST)
array([id]=>'123',[name]=>'.[place]=>'.[color]=>'.
其中,name
、place
和color
是用户提交的可选字段。。。。。用户只能选择名称
,位置
或颜色
,名称+颜色
,颜色+位置
,或全部三个名称+颜色+位置
如何将用户选择的这些选项的条件放置在哪里?例如,在Laravel中,我们使用以下语句选择DB table
$Select_db = Db::table('mytable')
->where('name', Input::get('name'))
->where('place', Input::get('place'))
->where('color', Input::get('color'))
->select()
->get();
正如您所看到的,只有当用户对所有字段都有输入时,上述条件才起作用,根据用户输入,我想添加where
条件,我们如何解决这个问题
注意:在这个特定场景中,我知道我可以对每个条件使用isset()
。但是,如果有许多可选输入怎么办
$Select_db = Db::table('mytable');
foreach($_POST as $key => $val) {
$Select_db->where($key, Input::get($key));
}
$Select_db->query()->get();
可以考虑复制<代码> $POST <代码>,在输入<代码>前缀> >:
之前删除不希望的值。
unset($postcopy['badvar'])
那怎么办
$Select_db = Db::table('mytable');
foreach($_POST as $key => $val) {
$Select_db->where($key, Input::get($key));
}
$Select_db->query()->get();
可以考虑复制<代码> $POST <代码>,在输入<代码>前缀> >:
之前删除不希望的值。
unset($postcopy['badvar'])
试试这个:-
$Select_db = DB::table('mytable');
if (Input::get('name') != "")
$Select_db->where('name', Input::get('name'));
if (Input::get('place') != "")
$Select_db->where('place', Input::get('place'));
if (Input::get('color') != "")
$Select_db->where('color', Input::get('color'));
$result = $Select_db->get();
如果要匹配多个列,请尝试使用以下方法:-
$Select_db = DB::table('mytable');
foreach($_POST as $key => $val){
if(Input::get($key) != ""){
$Select_db->where($key, Input::get($key));
}
}
$Select_db->get();
试试这个:-
$Select_db = DB::table('mytable');
if (Input::get('name') != "")
$Select_db->where('name', Input::get('name'));
if (Input::get('place') != "")
$Select_db->where('place', Input::get('place'));
if (Input::get('color') != "")
$Select_db->where('color', Input::get('color'));
$result = $Select_db->get();
如果要匹配多个列,请尝试使用以下方法:-
$Select_db = DB::table('mytable');
foreach($_POST as $key => $val){
if(Input::get($key) != ""){
$Select_db->where($key, Input::get($key));
}
}
$Select_db->get();
检查此链接可能对您有帮助@Sadikhasan他们正在为已知输入添加多个where条件
。。但在我的情况下,它的未知输入似乎与我的问题不同…检查此链接可能对您有帮助@Sadikhasan他们正在为已知输入添加多个where条件
。。但在我的情况下,它是未知输入似乎与我的问题不同。。。