我不确定用什么关键词来搜索这个答案,它很简单,但什么都找不到。
据我所知,模型用于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,并从数据映射器层调用。