人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

cakephp1.1のmodelのfindAll関数のfields部分の引数に、
DATE_FORMATなどMySQLの関数を書く方法を教えてください。

どうもtable名が「`Meshi`.`DATE_FORMAT(」のように入ってしまい、
「Unknown column 'Meshi.DATE_FORMAT(date_time_original' in 'field list'」
なようです。


■失敗
$fields = 'DISTINCT DATE_FORMAT(date_time_original, "%Y-%m-%d") date_time_originalYMD';

■成功(だがトリッキー)
$fields = array('DISTINCT DATE_FORMAT(date_time_original, "%Y-%m-%d") date_time_originalYMD');

http://pkms.blog77.fc2.com/blog-entry-2.html
を参照した。

■はき出されるSQL
SELECT DISTINCT `Meshi`.`DATE_FORMAT(date_time_original`, `Meshi`.`"%Y-%m-%d") date_time_originalYMD` FROM `meshis` AS `Meshi` WHERE 1 = 1 ORDER BY `date_time_original` DESC LIMIT 60, 20

●質問者: kunitz
●カテゴリ:ウェブ制作
✍キーワード:as FIELD FIELDS Model MySQL
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● t_shiono
●35ポイント

直接的な回答ではないので、ポイント不要です。

Googleなどで検索はされていると思うので、ご存知とは思いますが、クエリーで対処することよりも、afterFindでとってきた後に書加工するのが一番単純なようです。

http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=902&forum...

念のため。


2 ● chuken_kenkou
●35ポイント

関数を、表名や別名で修飾するという使い方はありません。

MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.3.4 日付と時刻関数

`Meshi`.`DATE_FORMAT(date_time_original`, `Meshi`.`"%Y-%m-%d")

→DATE_FORMAT関数をMeshiで修飾するのは誤り。書式編集文字を修飾するのも誤り。

DATE_FORMAT(meshi.列名,書式) という形式にする必要がある。


つまりSQLとしては、以下のようになります。

SELECT DISTINCT `Meshi`.`DATE_FORMAT(date_time_original`, `Meshi`.`"%Y-%m-%d") date_time_originalYMD` FROM `meshis` AS `Meshi` WHERE 1 = 1 ORDER BY `date_time_original` DESC LIMIT 60, 20

SELECT
 DISTINCT
 DATE_FORMAT(`Meshi`.`date_time_original`, "%Y-%m-%d") date_time_originalYMD`
 FROM `meshis` AS `Meshi` 
 WHERE 1 = 1
 ORDER BY `date_time_original` DESC LIMIT 60, 20
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ