[s2container-php5:73] /*IF */ ... --ELSE ... /*END*/の使用方法について
Eishi Kuroda
kuroda @ jetsetrecords.net
2007年 2月 6日 (火) 16:27:19 JST
こんにちは、黒田です。
立て続けに質問してすみません。
S2Daoのコメントの使用についてなのですが、
下記のように/*IF */コメントを使用しようと思い試してみたのですが、
リファレンスに沿ってまず、下記のように設定したところ、上手くいきません。
const getFormatByWeightList_QUERY = '/*IF weight != null*/formats.weight=/*weight*/0 --ELSE formats.weight is null/*END*/';
public function getFormatByWeightList($weight = null);
生成されたクエリのWHERE以下は下記の通りとなり、SQLExceptionとなります。
$dao->getFormatByWeightList(100)
WHERE 100
$dao->getFormatByWeightList(null)
WHERE is null
次に、下記のようにしてみました。
const getFormatByWeight2List_QUERY = '/*IF weight != null*/formats.weight=/*weight*/0 --ELSE isnull(formats.weight)/*END*/';
public function getFormatByWeight2List($weight = null);
引数100の場合は同じなのでエラーでしたが、nullの場合、WHERE以下が下記のように生成され、成功します。
WHERE isnull(formats.weight)
最後に、下記のようにしてみました。
const getFormatByWeight3List_QUERY = 'formats.weight /*IF weight != null*/=/*weight*/0 --ELSE is null/*END*/';
public function getFormatByWeight3List($weight = null);
これだと、引数100, nullの場合それぞれ、
WHERE formats.weight =100
WHERE formats.weight is null
となり、両方成功します。
QUERYアノテーションをSQLに変えて同様に行っても、同じ結果でした。
本当は一番最初の書き方で使える筈だと思うのですが、一番最後の方法で使うしかないのでしょうか?
それとも、根本的に何かを間違っているのでしょうか?
リファレンスには下記の例が載っていたのですが、これだと上手く行かないと思います。
/*IF hoge != null*/hoge = /*hoge*/'abc'
--ELSE hoge is null
/*END*/
環境は下記の通りです。
CentOS 4.3
PHP 5.1.6
MySql 5.0.22
S2Dao.PHP5 1.1.1
S2Container.PHP5 1.1.1
では、よろしくお願いいたします。
黒田
S2Container-PHP5 メーリングリストの案内