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

Я новичок в cakephp и у меня проблема с созданием приложения. В моей заявке есть модели под названием «Клиент», «Работа», «Jobtask», «Jobtasksvehicle» и «Автомобиль». Их связь с базой данных - Клиент-> Работа-> Jobtask-> Jobtasksvehicle-> Автомобиль. У меня есть страница с названием «Лист работы», на которой я должен отобразить имя клиента, идентификатор работы, задачу и название транспортного средства. Я могу получить имя клиента, идентификатор задания и отображение задания, но не могу понять, как отобразить там название автомобиля. Может ли кто-нибудь помочь мне.

Это модель для страницы

    function sch($id = null) {
    if (!$id) {
        $this->Session->setFlash(__('Invalid job', true));
        $this->redirect(array('action' => 'index'));
    }
    $this->set('job', $this->Job->read(null, $id));

Я хочу отобразить название автомобиля в этой таблице

<div class="related">

<?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['Jobtasksvehicle']['vehicle_id'];?></td>    

        <td class="actions">



            <?php echo $this->Html->link(__('Allocate Vehicle', true), array('controller' => 'jobtasksvehicles','action' => 'add', $jobtask['id'])); ?>
            <?php echo $this->Html->link(__('View', true), array('controller' => 'jobtasks', 'action' => 'view', $jobtask['id'])); ?>
            <?php echo $this->Html->link(__('Edit', true), array('controller' => 'jobtasks', 'action' => 'edit', $jobtask['id'])); ?>
            <?php echo $this->Html->link(__('Delete', true), array('controller' => 'jobtasks', 'action' => 'delete', $jobtask['id']), null, sprintf(__('Are you sure you want to delete # %s?', true), $jobtask['id'])); ?>
        </td>
    </tr>
<?php endforeach; ?>
</table>

Это отношения между моделями

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

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

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

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

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

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

Автомобиль имеет много рабочих мест

1 Ответ

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

Использование поведения Containable, как упоминает Росс, - лучший подход.Добавьте к вашей модели работы:

var $actsAs = array('Containable');

И в вашем контроллере:

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

См. Содержащаяся документация для получения дополнительной помощи.Я оставлю обсуждение данных на ваше усмотрение.

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