テーブル「User」とコントローラー「users_controller.php」があり、「cateogry」という別のテーブルがあり、「listall」アクション(site.com/users/listall)でこのテーブルから値を取得する必要があります。
別のテーブルから値を取得するにはどうすればよいですか。
テーブル「User」とコントローラー「users_controller.php」があり、「cateogry」という別のテーブルがあり、「listall」アクション(site.com/users/listall)でこのテーブルから値を取得する必要があります。
別のテーブルから値を取得するにはどうすればよいですか。
カテゴリを含むselect要素を埋めるには、ユーザーbelongsToカテゴリの関係があると仮定します。
$ category = $ this-> User-> Category-> find('list'); $ this-> set(compact('categories'));
echo $ form-> input('User.category_id');
Cakeは、Inflectorのおかげ$categories
で、selectの変数に含まれている値を自動的に使用します。category_id
何らかの理由で値が別の変数にある場合は、
echo $ form-> input('User.category_id'、array('options' => $ values_array));
/models/user.php:
var $actsAs = array('Containable');
var $hasMany = array('Category');
/controllers/users_controller.php:
function listall()
{
$users = $this->User->find('all', array('contain' => array('Category')));
$this->set('users', $users);
}
/views/users/listall.ctp:
foreach($users as $user)
{
echo htmlspecialchars($user['User']['username']);
echo '<ul>';
foreach($user['User']['Category'] as $category)
{
echo '<li>';
echo htmlspecialchars($category['description']);
echo '</li>';
}
echo '</ul>';
}
デバッグ関数を使用して、$users配列を表示します。
debug($users);
封じ込め可能な動作に関するドキュメントを確認してください。
User モデルと Category モデルの間に hasMany 関係があると思いますか?
そしたら案外簡単。
$this->User->find('first')->Category->find('all');
ユーザーに関連付けられたすべてのカテゴリを取得します。
あなたに役立つかもしれないいくつかのリソース: