';如果';语句来格式化SQL查询筛选器


'if' statements in model to format SQL query filter

我不确定用什么关键词来搜索这个答案,它很简单,但什么都找不到。

据我所知,模型用于sql查询。没有逻辑。

那么过滤器呢?

例如

function getItems($partnerUserId) {
    $param = "";
    $params = array();
    if ($partnerUserId !== '') {
        $param = "AND z.x = ?";
        $params[] = $partnerUserId;
    }
    $sql = "SELECT ...
      FROM z
      WHERE z.a = 1
      $param";
     return DB::connection($connection)->select($sql, $params); 
}

在现实世界的例子中,有更多这样的陈述。模型应该是这样的吗或者我应该在控制器中执行此逻辑,然后将过滤器字符串作为参数传递给模型函数?

这是基本的分层架构,查询的构建应该在数据映射器或dao类中完成。如果是一些冗余代码或复杂代码,可以使用静态方法创建util,并从数据映射器层调用。