.ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録

.検索

.メインメニュー

.フォーラムメニュー

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

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

もっと...

.
.リンク集

メイン
   CakePHP モデル(Model)
     Model | find("list") により得られる配列で id/name 以外のフィールドを組み合わせる
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
custar
投稿日時: 2008-9-11 22:14
Cake 職人
登録日: 2007-5-31
居住地:
投稿: 189
Model | find("list") により得られる配列で id/name 以外のフィールドを組み合わせる
cakephp v1.2 rc2
php v5


デフォルトでは find("list") によって得られる配列は、
例えば User Model の場合、

$users = $this->User->find("list");

index : User.id
value : User.name (name フィールドがなければ title)

index ... Model.primaryKey が使われる (例 User.id)
value ... Model.displayField が使われる (例 User.name or User.title)


それぞれの割り当てを自由に変更するには、
find() の第 2 引数で "fields" index をもつ配列に、使いたいフィールドを指定すればよい。

フィールドには 3 つまで指定できる。



(1) 1 個の場合 ... primaryKey / field-1


<?php
$fields 
= array(
  
"fields" => array(
    
"User.display_name"));

$users $this->User->find("list"$fields);
?>



結果

Array (
  [1] => admin1
  [2] => owner1
  [3] => manager1
  [4] => manager2
) 



(2) 2 個の場合 ... field-1 / field-2


<?php
$fields 
= array(
  
"fields" => array(
    
"User.email"
    
"User.display_name"));

$users $this->User->find("list"$fields);
?>



結果

Array (
  [admin1@example.com]   => admin1
  [owner1@example.com]   => owner1
  [manager1@example.com] => manager1
  [manager2@example.com] => manager2) 



(3) 3 個の場合 ... field-1 / field-2 / field-3


<?php
$fields 
= array(
  
"fields" => array(
    
"User.email"
    
"User.display_name"
    
"User.role_id"));

$users $this->User->find("list"$fields);
?>



結果 : Role ごとにグループ分けされて User 情報が返される

Array (
  [1] => Array ( ................................. Admin
    [admin1@example.com]   => admin1 )

  [2] => Array ( ................................. Owner
    [owner1@example.com]   => owner1 )

  [3] => Array ( ................................. Manager
    [manager1@example.com] => manager1
    [manager2@example.com] => manager2 )
) 



以上
ken822
投稿日時: 2008-9-11 23:44
Baker ユーザ
登録日: 2008-1-29
居住地: クロアチア
投稿: 30
Re: Model | find("list") により得られる配列で id/name 以外のフィールドを組み合わせる
3つ目に指定したものでグルーピングされるとは知りませんでした。新しいfindの使い方はまだ慣れてないんで、こういう情報は助かります。
custar
投稿日時: 2008-9-11 23:54
Cake 職人
登録日: 2007-5-31
居住地:
投稿: 189
Re: Model | find("list") により得られる配列で id/name 以外のフィールドを組み合わせる
どういたしまして。

私が必要だったから調べただけなので、摘み食いみたいな情報になります。

ソースが私好みの整形じゃないので、整形しながらソースを追うと、
まだまだ book に挙げられていない情報がたくさんあります。
ken822
投稿日時: 2008-9-12 4:37
Baker ユーザ
登録日: 2008-1-29
居住地: クロアチア
投稿: 30
Re: Model | find("list") により得られる配列で id/name 以外のフィールドを組み合わせる
確かにそうですねー。ヘルパーの使い方とか掘れば沢山知られて無い機能が沢山ありそうですね。

それも全て配列ベースで変数のやり取りがされているのが原因なんですが。。。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 


. .