[s2container-php5:75] Re: 単一フィールドのみを検索するSELECT文について

Yusuke Hata nowel @ xole.net
2007年 2月 8日 (木) 00:18:04 JST


ハタです。

現在、S2Dao.PHP5-1.1.1では、単一フィールドの取得では取得型を無視し、単一の値を返す仕様になっております。
PHPでは、戻りの型が存在しないため、戻り値の判定と戻りの型判定で相違がでてしまうのでそういう仕様になっています。

たとえば、以下のようなカウントを取得するエンティティを必要としない結果セットの場合
戻りの型を指定すると、どのエンティティにセットするかが不定となるため、現在そのようにしています。

const getCount_SQL = 'select count(*) from hoge'; // カラム名が不明のためEntityへ設定が行えない

もし、上記のSQLを発行する場合はエンティティに適用する必要があります。(Entityにcountフィールドを作る必要もあります)

const getCount_SQL = 'select count(*) as count from hoge'; // Entityにcountフィールドがあればそこに設定をする

基本的にArrayやListの結果セットの取得はBeanの配列、Beanのリスト形式の取得を行うために作成しているので
ArrayやListの結果セットはBeanに結びつけれる形式を想定しています。

また、戻りの型に合わせた結果セットを取得しようとするならば
S2Dao_BasicSelectHandlerを拡張する修正が必要になるかと思います。


以上です。
よろしくお願いします。

On Tue, 06 Feb 2007 14:54:51 +0900
Eishi Kuroda <kuroda @ jetsetrecords.net> wrote:

> こんにちは、黒田です。
> 
> あるテーブルから、単一のフィールドのみ検索したいと思い、
> 下記の様にDaoクラスに記述して呼び出したところ、
> S2Dao_ArrayListでなく、一つの文字列で返って来てしまいます。
> 
> 	const getDateByDateEqualOrGreaterThanList_SQL = 'select
> distinct date from some_table where /*startDate*/"2006-10-10" <= date
> order by date'; public function getDateByDateEqualOrGreaterThanList
> ($startDate = null);
> 
> メソッド名の最後をArrayにしても、配列ではなく、文字列だけが返ってきま
> す。
> 
> select以下に同じフィールドを2つ記述すると、S2Dao_ArrayListや配列で返っ
> てくるので、とりあえずそれで対処していますが、
> そういう仕様なんでしょうか?
> 
> 	const getDateByDateEqualOrGreaterThanList_SQL = 'select
> distinct date, date from some_table where /*startDate*/"2006-10-10"
> <= date order by date';
> 
> 環境は下記の通りです。
> CentOS 4.3
> PHP 5.1.6
> MySql 5.0.22
> S2Dao.PHP5 1.1.1
> S2Container.PHP5 1.1.1
> 
> では、よろしくお願いいたします。
> 
> 黒田
> 
> 

-- 
Yusuke Hata <nowel @ xole.net>
blog: http://blog.xole.net/


S2Container-PHP5 メーリングリストの案内