CakePHPでDBデータからセレクトボックス作成

Posted by joeartsea on 2009-03-14

DBから取得したデータをセレクトボックスのオプションにする場合、CakePHP1.1ではgenerateListを使用して以下のように書きます。

1
$this->Model->generateList($conditions, $order, $limit, $keyPath, $valuePath);

引数の意味は

  • $conditions…検索条件
  • $order…ソート順
  • $limit…取得上限数
  • $keyPath…オプションのキーに設定するカラム
  • $valuePath…オプションの値に設定するカラム

実際の使用例は以下のようになります。

まずコントローラでgenerateListを使用してDBからセレクトボックスのオプションに利用するデータを取得しviewへ渡します。

1
2
$option = $this->Role->generateList(null, 'role_name ASC', null, '{n}.Role.id', '{n}.Role.role_name');
$this->set('option', $option);

次にviewで以下のように書けば完了です。

1
<?php echo $html->selectTag(&#39;Post/question&#39;, $option, null, null, null); ?>

ただしCakePHP1.2ではgenerateListは非推奨になったようです。CakePHP1.2では$this->Role->generateListではなく$this-> Role->find('list')と書けば済むようです。