Mysql /代码>部分和限制语句在其他情况下?复杂性(几乎)与是否使用参数无关(将值直接放在查询中)。使用命名参数更像是“条令方式”,但如果没有其他方式,您可能不得不放弃它们。是的,我使用相同的子查询来计算问题在其他查询中是否处于活动状态,而另一个大查询也在使用li
Mysql /代码>部分和限制语句在其他情况下?复杂性(几乎)与是否使用参数无关(将值直接放在查询中)。使用命名参数更像是“条令方式”,但如果没有其他方式,您可能不得不放弃它们。是的,我使用相同的子查询来计算问题在其他查询中是否处于活动状态,而另一个大查询也在使用li,mysql,symfony-1.4,doctrine-1.2,Mysql,Symfony 1.4,Doctrine 1.2,/代码>部分和限制语句在其他情况下?复杂性(几乎)与是否使用参数无关(将值直接放在查询中)。使用命名参数更像是“条令方式”,但如果没有其他方式,您可能不得不放弃它们。是的,我使用相同的子查询来计算问题在其他查询中是否处于活动状态,而另一个大查询也在使用limit,并且工作正常。。。这很奇怪。查看我当前的查询,只有一个带有命名参数的addSelect()(与示例相同)。我还有其他类似于addSelect(“(”.otherSubquery->getDql()”)的值“;在otherSubquery
/代码>部分和
限制
语句在其他情况下?复杂性(几乎)与是否使用参数无关(将值直接放在查询中)。使用命名参数更像是“条令方式”,但如果没有其他方式,您可能不得不放弃它们。是的,我使用相同的子查询来计算问题在其他查询中是否处于活动状态,而另一个大查询也在使用limit,并且工作正常。。。这很奇怪。查看我当前的查询,只有一个带有命名参数的addSelect()
(与示例相同)。我还有其他类似于addSelect(“(”.otherSubquery->getDql()”)的值“
;在otherSubquery
中也有命名参数。替换:COALESCE((“$sub\u query\u处于活动状态”)>:active\u time
forCOALESCE(“$sub\u query\u处于活动状态”)>$active\u time
?这可能是一个安全问题?我不明白为什么我可以使用命名参数在一个地方使用几乎相同的查询,并且效果很好…无论如何,我遵循@Michal建议,我更改了一些命名参数(:param),并在字符串中直接用$param替换它们,结果成功了。谢谢!)它必须与使用查询或生成的Dql(使用$sub\u query\u处于活动状态
与$otherSubquery->getDql()
)有所不同,尽管您必须深入研究内部以查看发生了什么。
$params = array();
$query_questions_visibles = questionTable::getInstance()->createQuery("q")
->select("q.*, ua.*, a.*, u.*, c.*")
->leftJoin("q.Answers a")
->leftJoin("a.UserAnswers ua")
->Where("q.blocked = false")
->andWhere("ua.user_id = :user_id")
->orderBy("q.id DESC")
->groupBy("q.id");
//Subquery --> Calculates when a question is active or not
$format = sfConfig::get("app_datetime_format");
$active_time = date($format, strtotime(sfConfig::get("app_question_active_time")));
$sub_query_is_active = $query_questions_visibles->createSubQuery()
->select("MAX(ua0.created_at)")
->from("question q0")
->leftJoin("q0.Answers a0")
->leftJoin("a0.UserAnswers ua0")
->where("q0.id = q.id");
$query_questions_visibles->addSelect("COALESCE((".$sub_query_is_active.") > :active_time, false) as Active");
//Set param values
$params["user_id"] = $guardUser->id;
$params["active_time"] = $active_time;
$result = $query_questions_visibles->execute($params);
$query_questions_visibles->limit(10);
$result = $query_questions_visibles->execute($params);