我遇到了以下问题。在我的产品表中,我有两列
Date_start和Date_end(它们都是我表中的DATE数据类型)。
我想检查当前日期是否在Date_start和Date_end之间,那么状态必须是“不可用”,否则它必须具有“可用”状态。
如何在Zend_Db_Expr中修复它?
我现在有以下查询。
$getProducts = $this->oSelect
->from(array('p'=>'producten'))
->columns(array('link' => "CONCAT('/t/', p.titel_key)"))
->joinLeft(array('c'=>'categorie'),'p.categorie_id = c.id',array('cat_titel'=>'c.titel'))
->joinLeft(array('sc'=>'subcategorie'),'p.subcategorie_id = sc.id', array('subcat_titel'=>'sc.titel'))
->where('p.online = 1');
答案 0 :(得分:3)
在你的专栏中:
->columns(array('link' => "CONCAT('/t/', p.titel_key)",
'status' => new Zend_Db_Expr("...")))
'CASE'应该看起来像这样(为了便于阅读,我将其分开);
CASE WHEN p.Date_end < NOW() AND p.Date_start > NOW()
THEN 'not available' ELSE 'available' END
Zend_Db_Expr将接受您提供的任何内容并按字面意思使用它。请记住,如果由于某种原因您切换系统,任何特定于DB的命令都可能会中断。