我正在开发一个小应用程序来帮助学习cakephp 2.0。它是一个简单的任务管理器应用程序。
我在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' => ''
)
);
答案 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