Cakephp не работает должным образом - PullRequest
1 голос
/ 07 февраля 2012

Я работаю над небольшим приложением, которое поможет освоить cakephp 2.0. Это простое приложение диспетчера задач.

Таблица

  • пользователей
  • заданий
  • 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());     
}

Я пытаюсь найти задачи пользователя '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 Ответ

2 голосов
/ 07 февраля 2012

Чтобы получить задачи, которые принадлежат пользователю, это гораздо проще сделать в UsersController.Конечно, вы должны установить User hasMany Task в UserModel.

Теперь вы можете создать функцию, например, для просмотра пользователя и его задач по идентификатору:

public function view($id = null) {
        $this->User->id = $id;
        $this->set('user', $this->User->read(null, $id));
    }

Задачи должнытеперь будет доступен по вашему мнению $user['tasks'].Вы должны передать идентификатор в URL, например: / 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 является блог-руководство:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...