2010-12-06 1 views
0

私は次の問題を抱えています。私の製品のテーブルでは、私は、2つの列Zend_DB_ExprでMYSQLのCASE関数を使用する

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'); 

答えて

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固有のコマンドが壊れる可能性があることを覚えておいてください。

+0

私はこれを試してみると、それをbymself理解よあなたにダリルありがとうございます。 – Navid

+0

"何らかの理由でシステムを切り替えると、DB固有のコマンドが壊れることがあります。このことについてもっと教えていただけますか?私はちょうどこれをしたい: '<?php echo Zend_Db_Expr( 'NOW()');私はPHP + MySQLをアンインストールして他の理由で再インストールしなければなりませんでした。なぜ私のZend_Db_Expr()が動作しないのですか?ありがとう! – Metafaniel

関連する問題