我知道在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;
}
答案 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]论坛帖子了解更多信息