.ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録

.検索

.メインメニュー

.フォーラムメニュー

.オンライン状況
13 人のユーザが現在オンラインです。 (13 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 13

もっと...

.
.リンク集

メイン
   CakePHP モデル(Model)
     hasmanyの要素を扱う方法・・・
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
pikapika
投稿日時: 2008-4-20 13:42
Baker ユーザ
登録日: 2008-4-20
居住地:
投稿: 33
hasmanyの要素を扱う方法・・・
たとえば
usersがentriesを複数持っていて(hasmany)

select users.name, count(*) as count
from users left join entries on (users.id = entries.user_id)
group by users.id
order by count desc

のようなことをしたい場合
どのようにfindAllすればよいのでしょうか?

それともじぶんでクエリを書くしかないのでしょうか?

よろしくお願いします。
nuto
投稿日時: 2008-4-20 18:50
一人前
登録日: 2008-4-14
居住地:
投稿: 147
Re: hasmanyの要素を扱う方法・・・
まずはマニュアルを参照されることをお勧めします。

cakePHP プログラマーズリファレンスガイド(公式マニュアル) 6.4 アソシエーション

cakePHP内部でどのようなクエリが生成されているかを確認するには、 「/path_to_cakePHP/app/config/core.php」で定義されている定数「DEBUG」の値を2にしてみてください。
jyokyoku
投稿日時: 2008-4-20 22:12
Baker スタート
登録日: 2008-2-16
居住地:
投稿: 14
Re: hasmanyの要素を扱う方法・・・
ちょうどさっきそんなのを書きました。
これはUserの名前と、書いたEntry数を一度に引っ張ってきたいってことですよね?(違うかな)

hasmanyの要素数を引っ張ってくるのって意外に面倒ですね。
こういう細かいTIPSもマニュアルにあるといいんですが。

アソシエーションが正しく張ってあって、
UserとEntryだとして…


$this->User->findAll(array('1 = 1 GROUP BY User.id'), array('User.name', 'count(Entry.id) as count'));


こんなので行けるんじゃないかと思います。


追記:

上で行けると思ったんですが、これはbelongsToの場合ですね。
Entryの方から逆引きすれば行けると思います。


$this->Entry->findAll(array('1 = 1 GROUP BY User.id'), array('User.name', 'count(Entry.id) as count'));
pikapika
投稿日時: 2008-4-21 23:50
Baker ユーザ
登録日: 2008-4-20
居住地:
投稿: 33
Re: hasmanyの要素を扱う方法・・・
なるほど・・・
belongsToのほうからじゃないとうまく接続できないんですね;

参考になります!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 


. .