您是否可以在laravel3中使用查询构建器在运行时使用动态WHERE子句构建查询?

时间:2014-04-14 13:09:34

标签: php mysql laravel laravel-3

我知道在Laravel 4中你可以在运行时创建一个动态WHERE子句,如下所示:

Can you use query builder to build a query with a dynamic WHERE clause at runtime in laravel?

但你能否在laravel 3中做同样的事情?

如果没有,那么您可以选择创建原始SQL代码,如下所示:

$SQL = "SELECT * FROM " . $table;

$first = 1;
foreach($items as $key => $val)
{
   if($first) $SQL .= " WHERE ";
       else $SQL .= " AND ";
   $SQL .= $key . " LIKE " . $VAL;
   $first = 0;
}

3 个答案:

答案 0 :(得分:1)

它几乎完全相同。只需使用$query = DB::table('tablename');代替相关帖子中的第一行,然后将其用作示例其余部分的显示。

答案 1 :(得分:0)

您可以使用以下内容执行此操作:

$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

您可以根据需要链接尽可能多的where子句,直到您调用get()方法。同时检查this answer/L-4以获得另一个想法。阅读Laravel - 3手册对您有所帮助。

答案 2 :(得分:0)

您可以使用查询构建器执行此类查询。

 $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中运行正常。查看此[http://forumsarchive.laravel.io/viewtopic.php?id=1494]论坛帖子了解更多信息