0

我有一个表“用户”和一个控制器“users_controller.php”,我还有另一个名为“cateogry”的表,需要在“listall”操作( site.com/users/listall)中从该表中检索值。

我如何从另一个表中获取值。

4

3 回答 3

1

要填充包含类别的选择元素,假设您有一个 User belongsTo Category 关系:

  • 在控制器中,准备好在选择元素中使用的类别
$categories = $this->User->Category->find('list');
$this->set(compact('categories'));
  • 在视图中添加您的选择元素:
echo $form->input('User.category_id');

由于 Inflector,Cake 将自动使用$categories变量中包含的值进行选择。category_id如果由于某种原因您的值位于不同的变量中,请使用

echo $form->input('User.category_id', array('options' => $values_array));
于 2009-11-02T21:30:54.607 回答
0

/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);

查看有关可包含行为的文档:

http://book.cakephp.org/view/474/Containable

于 2009-10-20T19:15:33.067 回答
0

我猜您的 User 和 Category 模型之间存在 hasMany 关系?

然后就很简单了。

$this->User->find('first')->Category->find('all');

将检索与用户关联的每个类别。

一些可能对您有帮助的资源:

于 2009-10-19T17:24:20.323 回答