Php 使用Laravel(MVC)框架时,应该如何连接查询?

Php 使用Laravel(MVC)框架时,应该如何连接查询?,php,sql,laravel,Php,Sql,Laravel,这里我使用的是Laravel(MVC)框架。我正在从控制器重定向输入表单 那么,我应该如何将查询与该输入连接起来呢。那么,这段代码有效还是需要修改?您可以尝试以下方法: static function getall($input) { $where = []; $params = []; $sql = 'SELECT * FROM radio_city'; if (isset($input['city']) && $input['city']) { $where[] = ' ci

这里我使用的是Laravel(MVC)框架。我正在从控制器重定向输入表单
那么,我应该如何将查询与该输入连接起来呢。那么,这段代码有效还是需要修改?

您可以尝试以下方法:

static function getall($input) {
$where = [];
$params = [];
$sql = 'SELECT * FROM radio_city';
if (isset($input['city']) && $input['city']) {
$where[] = ' city = ?'; // Subsequent additions to $where should specify AND/OR conditional
$params[] = $input['city']; 
}
$sql .= implode(' ', $where); 
$sql .= " GROUP BY city";
return DB::select($sql, $where, $params); 
}
}
请阅读更多关于。还可以查看
ORM
和。您应该首先阅读文档,所有内容都在那里给出。

最相似的是因为Lavarel使用包装器进行查询,它不使用ORM,如果您使用带有ORM的框架(例如Django)或用于PHP的ORM(例如,它在Symfony中使用的原则),那么您可以在没有SQL的情况下使查询更高级,但是对于Laravel,您需要使用Laravel包装器生成的SQL来实现它。

也许可以帮助您
public static function getAll() {
     $query = DB::table('radio_city');
     if($city = Input::get('city')) {
         $query->where('city', $city);
     }
     return $query->groupBy('city')->get();
}