Php 您可以使用查询生成器在运行时在laravel3中使用动态WHERE子句构建查询吗?
我知道在Laravel 4中,您可以根据以下问题在运行时创建动态WHERE子句: 但是你能在《拉威尔3》中也这么做吗 如果不是,则只能选择创建原始SQL代码,如下所示:Php 您可以使用查询生成器在运行时在laravel3中使用动态WHERE子句构建查询吗?,php,mysql,laravel,laravel-3,Php,Mysql,Laravel,Laravel 3,我知道在Laravel 4中,您可以根据以下问题在运行时创建动态WHERE子句: 但是你能在《拉威尔3》中也这么做吗 如果不是,则只能选择创建原始SQL代码,如下所示: $SQL = "SELECT * FROM " . $table; $first = 1; foreach($items as $key => $val) { if($first) $SQL .= " WHERE "; else $SQL .= " AND "; $SQL .= $key .
$SQL = "SELECT * FROM " . $table;
$first = 1;
foreach($items as $key => $val)
{
if($first) $SQL .= " WHERE ";
else $SQL .= " AND ";
$SQL .= $key . " LIKE " . $VAL;
$first = 0;
}
它的工作原理几乎完全相同。只需使用
$query=DB::table('tablename')代码>取代相关文章中的第一行,然后使用它,如示例的其余部分所示。您可以使用以下方法来完成此操作:
$query = DB::table($table);
if(isset($key1) && isset($val1)) {
$query->where($key1, 'LIKE', $val1);
}
if(isset($key2) && isset($va2)) {
$query->where($key2, '=', $val2);
}
$result = $query->get(); // returns all matching models
在调用get()
方法之前,可以根据需要链接任意多个where
子句。也可以查看以获得另一个想法。阅读本手册将对您有所帮助。您可以使用查询生成器执行类似这样的查询
$query = DB::table($table);
// Get only the fields from the form that we care about...
$form_fields = Input::get('email', 'username');
// Build a dynamic query based on the form with WHERE's
foreach ($form_fields as $name=>&$value) {
$query->where($name, '=', $value);
}
// Finally get all of the results...
$results = $query->get();
这在Laravel 3中确实很好。查看此[forum post以了解更多信息这不起作用。我得到一个方法[all]未在查询类上定义
您能否提供一个小的工作示例,说明如何在Laravel 3中实现这一点?@WildBill您能否向我们展示您正在使用的请求“all”的代码方法?如另一个问题所示,我尝试了一个“$query=$tableModel->newQuery();foreach($key=>$val的项){$query->where($key,“LIKE”、“%”.$val.%');}$query->all()`