CakePHP найти связанные данные модели - PullRequest
1 голос
/ 14 июня 2011

Я получил классы Пользователь и Фирма:

class Firm extends AppModel {
    var $name = 'Firm';
    var $belongsTo = 'User';
}

и:

class User extends AppModel {
    var $name = 'User';
    var $hasMany ='Post';
    var $hasAndBelongsToMany = 'Firm';
}

все работает нормально, но как мне найти Фирму, если идентификатор пользователя = например, 5?Я использовал:

$this->set('firms',$this->Firm->User->find('all', array('conditions'=>array('User.id'=>'5'))));

и на мой взгляд я поставил:

<table>
    <tr>
        <th>Firma</th>
    </tr>
    <?php foreach($firms as $firm): ?>
    <tr>
        <td><?php echo $firm ['Firm']['firm_id']; ?></td>  //line 9
    </tr>
    <?php endforeach; ?>
</table>

Но когда я вхожу в мой взгляд, я получаю ошибку:

"Notice (8): Undefined index: firm_id [APP\views\firms\wylistuj.ctp, line 9]"

Ответы [ 2 ]

0 голосов
/ 14 июня 2011

Вам нужно искать вот так:

$this->set('firms',$this->Firm->find('all',array('conditions'=>array('Firm.user_id'=>'5'))));

Это должно дать вам желаемый результат.

Редактировать:

В случае, если выЕсли вы хотите связать свои модели с отношением «есть и принадлежит многим», вам нужно написать свои 2 модели следующим образом:

//user.php
class User extends AppModel {
    var $name = 'User';
    var $hasAndBelongsToMany = 'Firm';
}

//firm.php
class Firmextends AppModel {
    var $name = 'Firm';
    var $hasAndBelongsToMany = 'User';
}

Чтобы увидеть, как вы можете работать с ассоциацией, прочитайте раздел руководства для HABTM (имеет и принадлежит ко многим) отношениям .

0 голосов
/ 14 июня 2011

firm_id будет в вашей таблице соединений, а не в модели вашей Фирмы.

Если вы хотите отобразить идентификатор текущей фирмы, вам просто нужно это

<td> <?php echo $firm['Firm']['id']; ?> </td>
...