[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 メーリングリストの案内