2012-02-07 44 views
1

我正在研究一个小应用程序来帮助学习cakephp 2.0。它是一个简单的任务管理器应用Cakephp发现不按预期工作

  • 用户
  • 任务
  • tasktypes

我一个设立在任务表的外键被称为 'user_id的' 作为任务属于用户。

现在我所要做的就是显示某个用户的任务,尽管sql查询得到正确的结果,但我测试任何帮助都会很好,但它不会工作。

在我的任务控制器我有方法;

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

我试图找到用户'管理员'或'真正的任务'的任务我做错了什么?

我怀疑这个问题可能与我的模型;

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' => '' 
    ) 
); 

回答

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在url等:/ path_to_your_app /用户/视图/

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

您很可能希望列出在foreach任何任务,在你看来,很简单的例子::

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

你可能想显示表什么的任务。

学习CakePHP的一个很好的出发点是博客教程:

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

+0

感谢这么多,我不得不错误的方式左右。 – 2012-02-07 11:22:45