Cakephp发现没有按预期工作

时间:2012-02-07 09:57:16

标签: database cakephp find

我正在开发一个小应用程序来帮助学习cakephp 2.0。它是一个简单的任务管理器应用程序。

  • 用户
  • 任务
  • tasktypes

我在task表中设置了一个名为'user_id'的外键 任务属于用户。

现在我要做的就是显示某个用户的任务,尽管sql查询在我测试时获得了正确的结果,但它根本无法工作,任何帮助都会很棒。

在我的taskcontroller中,我有方法;

//show the tasks of the current user
public function mytasks(){

    $this->set('title_for_layout', 'Gerrys TaskManager: Display Tasks');

    $this->Task->recursive = 0;         

    $tasks=$this->Task->find('all', array('conditions'=>array('username'=>'admin')));       

    $this->set('tasks', $this->paginate());     
}

我正在尝试找到用户'admin'或“已完成的任务”的任务,我做错了什么?

我怀疑问题可能与我的模型有关;

usermodel

/**
 * hasMany associations
 *
 * @var array
 */
    public $hasMany = array(
        'Task' => array(
            'className' => 'Task',
            'foreignKey' => 'user_id'
        )
    );

任务模型;

public $belongsTo = array(
    'User' => array(
        'className' => 'User',
        'foreignKey' => 'user_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'Tasktype' => array(
        'className' => 'Tasktype',
        'foreignKey' => 'tasktype_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

1 个答案:

答案 0 :(得分:2)

要获取属于用户的任务,在UsersController中执行此操作要简单得多。当然,您必须在UserModel中设置User hasMany Task。

现在您可以创建一个函数,例如通过id:

查看用户及其任务
public function view($id = null) {
        $this->User->id = $id;
        $this->set('user', $this->User->read(null, $id));
    }

$user['tasks']现在可以在您的视图中显示任务。您必须在网址中传递ID,例如:/ path_to_your_app / users / view / 1

您始终可以使用debug()查看数组或变量的内容。要查看您已将<?php debug($user);?>添加到您的视图中。

您很可能希望在视图中列出具有foreach的任何任务,非常简单的示例::

foreach($user['Task'] as $task) {
    echo $task['field1'] . ": " . $task['fied2'];
    echo "<br />";
}

当然,您可能希望在表格中显示任务。

学习cakePHP的一个很好的起点是Blog-Tutorial:

http://book.cakephp.org/2.0/en/getting-started.html#blog-tutorial