[英]Can This Query Be Written With Cdbcriteria (Yii Framework)?
我有此查询,我想用CDBCriteria编写它。 可以用CDBCriteria编写吗? 我不知道如何在Yii框架中使用CDBcriteria编写此查询。
谢谢你的时间。
$opt='';
if(!empty($roomtype))
{
$opt .= " AND id_room_type = ".$roomtype;
}
if(empty($children))
{
$opt .= " AND c.childrenFriendly = 1 ";
$capacity = $adults + $children;
}
else {
$capacity = $adults;
}
if(!empty($seaview))
{
$opt .= " AND c.seaview = 1 ";
}
if(!empty($smoking))
{
$opt .= " AND c.smoking = 1 ";
}
if(!empty($king_beds))
{
$opt .= " AND c.king_beds >= 1 ";
}
$qry = RoomType::model()->findAllBySql("
SELECT (number_of_rooms) AS total, id_room_type, c.reservation, c.start, c.end, childrenFriendly, smoking, king_beds, capacity,
SUM( number_of_rooms - IFNULL( c.reservation, 0 ) ) AS result
FROM room_type
LEFT JOIN (
SELECT fk_room_type, COUNT( fk_room_type ) AS reservation, start ,end
FROM room_type_reservation
WHERE
(end > '".$start->asSql()."' AND start < '".$end->asSql()."') OR
(start < '".$end->asSql()."' AND end < '".$start->asSql()."')
GROUP BY fk_room_type
)c ON id_room_type = fk_room_type
WHERE enabled = 1 AND capacity > ".$capacity." ". $opt ."
GROUP BY id_room_type
HAVING result > ".$number_of_rooms."
");
return $qry;
在阅读laser_wizard引用的文档时,请特别注意命名范围。 它们不是您在编程中对作用域的思考方式的作用域。 相反,它们是将预定义表达式添加到where子句的一种方法。 您可能还想考虑在SQL中使用参数标记而不是变量名称。 这样做将有助于保护您免受SQL注入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.