CakePHP - добавить / редактировать элемент, используя множественный выбор ссылок из нескольких таблиц - PullRequest
0 голосов
/ 07 апреля 2011

Обзор вопросов:

Я хочу иметь возможность редактировать элемент (в данном случае ресторан) и позволить пользователю выбирать несколько вариантов (кухонь), которые используют таблицусоединения для доступа к списку опций / кухонь.

Подробности вопроса:

У меня есть 3 таблицы:

restaurants:          id, name, address, phone...etc
cuisines:             id, name, url_name
cuisine_connections:  id, restaurant_id, cuisine_id

Как вы можете себе представитьтаблица kitchen_connections представляет собой список связей между кухнями и ресторанами.(Если у кого-то есть лучшее решение для этого, у меня все на слух).

model / restaurant.php:

    var $hasMany = array(
    'CuisineConnection' => array(
        'className' => 'CuisineConnection',
        'foreignKey' => 'restaurant_id',
        'dependent' => false
    )
);

model / kitchen.php

    var $hasMany = array(
    'CuisineConnection' => array(
        'className' => 'CuisineConnection',
        'foreignKey' => 'cuisine_id'
    )
);

model / kitchen_connection.php

var $belongsTo = array(
    'Cuisine' => array(
        'className' => 'Cuisine',
        'foreignKey' => 'restaurant_id',
        'dependent' => false
    ),
    'Restaurant' => array(
        'className' => 'Restaurant',
        'foreignKey' => 'restaurant_id'
    )
);

Я пробовал это до сих пор:

controllers / restaurant_controller.php:

$this->set('cuisines', $this->Restaurant->CuisineConnection->Cuisine->find('list'));

admin_add.ctp:

echo $this->Form->input('cuisine_id', array('multiple'=>'checkbox'));

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

звучит так, как вы ищете http://book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM

также обратите внимание, что условием для торта будут cuisines_restaurants, а не kitchen_connections

0 голосов
/ 07 апреля 2011

Вы можете прочитать этот урок , чтобы понять, как реализовать ассоциацию «многие ко многим» в CakePhp. Кроме того, код строки:

$this->set('cuisines', $this->Restaurant->CuisineConnection->Cuisine->find('list'));

есть проблемы. Я думаю, что, в зависимости от вашего описания, вы должны перечислить всю кухню для выбора с соответствующим рестораном. Код должен быть заменен на:

$this->set('cuisines', $this->Cuisine->find('all'));
...