Получение данных из разных моделей - PullRequest
0 голосов
/ 14 октября 2011

Я пытался отобразить данные из разных моделей на одной странице, но все еще не могу заставить их работать. Это отношения между моделями

Клиент имеет много работы

Работа принадлежит Заказчику

Работа имеет много заданий

Jobtask принадлежит Job

Jobtask имеет много Jobtasksvehicle

Jobtasksvehicle принадлежит Jobtask and Vehicle

Автомобиль имеет много рабочих заданий.

Это мой рабочий контроллер

    function sch($id = null) {
    if (!$id) {
        $this->Session->setFlash(__('Invalid job', true));
        $this->redirect(array('action' => 'index'));
    }
    $job = $this->Job->find('first', array(
'conditions' => array('Job.id' => $id),
'contain' => array('Customer',
    'Jobtask' => array(
        'Jobtasksvehicle' => array(
            'Vehicle'
         ),
     ),
),

));

Что мне нужно сделать, так это отобразить данные о клиенте, работе, задании, задании, моделях транспортных средств. Я могу получить отображение данных из Customer, Job и Jobtask, но не из Jobtasksvehicle и моделей транспортных средств. Я хочу отобразить каждое транспортное средство (модель транспортного средства), назначенное для каждой задачи.

Здесь я хочу отобразить задание и модели транспортных средств в одной таблице.

    <?php
    $i = 0;
    foreach ($job['Jobtask'] as $jobtask):
        $class = null;
        if ($i++ % 2 == 0) {
            $class = ' class="altrow"';
        }
    ?>
    <tr<?php echo $class;?>>
        <td><?php echo $jobtask['id'];?></td>
        <td><?php echo $jobtask['job_id'];?></td>
        <td><?php echo $jobtask['rate_id'];?></td>
        <td><?php echo $jobtask['type'];?></td>
        <td><?php echo $jobtask['date'];?></td>
        <td><?php echo $jobtask['starttime'];?></td>
        <td><?php echo $jobtask['timeband'];?></td>
        <td><?php echo $jobtask['settlement'];?></td>       
        <td><?php echo $job['Vehicle']['vehiclemodel'];?></td>
    </tr>
<?php endforeach; ?>
</table>

?>

1 Ответ

0 голосов
/ 14 октября 2011

Кажется, все в порядке, вам нужно поместить find в recursive = 3, например,

  $job = $this->Job->find('first', array(
      'conditions' => array('Job.id' => $id),
      'recursive' => 3,
      'contain' => array('Customer',
            'Jobtask' => array(
               'Jobtasksvehicle' => array(
               'Vehicle'
                ),
            ),
       ),
   ));

, но все же сдерживаемое поведение должно вычислять рекурсивное автоматическое. Убедитесь, что вы загружаете сдерживаемое поведение.

Проверьте книгу о сдерживаемом поведении

Также проверьте, выполняются ли SQL-запросы, если SQL-запросы появляются, вам может потребоваться указать поля (вы можете использовать Job. * O Vehicle. *, Чтобы получить все поля ...)

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