背景
我使用thinkphp6的模型写数据库查询,有多个where条件,但是不确定是否需要添加某个where条件,怎么才能动态得生成查询
链式查询
在ThinkPHP 6中,可以使用链式查询方法来动态地构建查询条件。可以根据参数的值来决定是否添加where
条件。
下面是一个示例代码,演示了如何根据参数动态地构建查询条件:
<?php
namespace app\controller;
use think\facade\Db;
class Index
{
public function getData($param1, $param2, $param3)
{
$query = Db::name('your_table'); // 指定要查询的表名
if ($param1 !== -1) {
$query->where('column1', $param1); // 添加第一个查询条件
}
if ($param2 !== -1) {
$query->where('column2', $param2); // 添加第二个查询条件
}
if ($param3 !== -1) {
$query->where('column3', $param3); // 添加第三个查询条件
}
$result = $query->select(); // 执行查询并返回结果
return $result;
}
}
如果是使用模型查询
<?php
namespace app\controller;
use think\Model;
class Index extends Model
{
public static function getData($param1, $param2, $param3)
{
$query = self::order('id'); // 开始构建查询,写空where会报错,所以写一个无关紧要的order
if ($param1 !== -1) {
$query->where('column1', $param1); // 添加第一个查询条件
}
if ($param2 !== -1) {
$query->where('column2', $param2); // 添加第二个查询条件
}
if ($param3 !== -1) {
$query->where('column3', $param3); // 添加第三个查询条件
}
$result = $query->select(); // 执行查询并返回结果
return $result;
}
}
这样就可以实现按照条件查询不同类型的用户
by 软件工程小施同学