2012-02-07 43 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