Как отобразить результаты отношения HABTM в представлении? - PullRequest
0 голосов
/ 08 сентября 2010

У меня есть отношение HABTM между таблицей книг и таблицей авторов, соединенной с таблицей author_books.Однако я не могу найти решение для отображения полей имя, фамилия и полное имя в моем представлении.

book-model:

class Book extends AppModel {
var $name = 'Book';
var $hasAndBelongsToMany = array(
    'Author' => array(
        'className' => 'Author',
        'joinTable' => 'authors_books',
        'foreignkey' => 'book_id',
        'associatioanForeignKey' => 'author_id'
    )
);

author-model:

class Author extends AppModel {
var $name = 'Author';
var $virtualFields = array(
    'fullname' => "CONCAT(firstname,' ',lastname)"
);
var $fullname = 'fullname';
var $hasAndBelongsToMany = array(
    'Book' => array(
        'className' => 'Book',
        'joinTable' => 'authors_books',
        'foreignkey' => 'author_id',
        'associatioanForeignKey' => 'book_id'
    )
);

books_controller:

   function view($id) {
    $this->Book->id = $id;
    $this->set('book', $this->Book->read());
}

debug ($ book) в моем wiev.ctp дают такие результаты:

Array
    (
[Book] => Array
    (
        [id] => 8
        [title] => A Forest of Kings: The Untold Story of the Ancient Maya
    )

[Author] => Array
    (
        [0] => Array
            (
                [id] => 6
                [firstname] => Linda
                [lastname] => Schele
                [fullname] => Linda Schele
            )

        [1] => Array
            (
                [id] => 7
                [firstname] => David
                [lastname] => Freidel
                [fullname] => David Freidel
            )

    )

)

Я верю [0] [1] проблема в индексе в массиве.Я искал проблему и нашел несколько статей на эту тему, но не смог заставить работать ни одно из решений.

Любая помощь очень ценится.Я использую cakephp 1.3.3

Спасибо

1 Ответ

3 голосов
/ 08 сентября 2010

Обычно вы циклически перебираете массив Author, поскольку у вас может быть разное количество авторов.

<ul>
    <?php foreach($book['Author'] as $author){ ?>
        <li><?php print($author['fullname']); ?></li>
    <?php } ?>
</ul>
...