2013-05-14 2 views
0

Предположим, у меня есть 2 стола.CakePHP получение данных из нескольких таблиц

Один этаж, другой магазин.

Внутри пол таблицы: идентификатор, floor_name

Внутри магазина таблицы: идентификатор, имя, floor_id.

Между тем, ассоциация: один этаж hasMany магазин, один магазин естьOne этаж.

нормально, вопрос есть ..

Как я могу получить данные floor_name непосредственно в то время как я только смог получить floor_id на мой взгляд?

Пример: отобразить все данные магазина, как
$shop['Shop']['name'], $shop['Shop']['floor_id'], который в моем /shops/main

Я хочу $shop['Shop']['floor_id'] поля отображения данных $floor['Floor']['floor_name']? возможное ?

+0

. Пожалуйста, добавьте сюда запрос на поиск. – liyakat

+0

. В этом вопросе много вопросов, включая странные соглашения об именах таблиц, неправильные (вероятные) ассоциации и ссылки на попытки получить данные БД из представления. – Dave

+0

Разве вы не забываете принадлежать? – Dan

ответ

4

Kampung,

Вы должны нижеуказанной ассоциации в вас таблицах:

Этажа hasMany Магазины Магазин belongsTo Этаж

Теперь в контроллере, когда вы будете получать данные о вашем магазине, то вы автоматически получать данные о полах.

$ магазины = $ this-> Shop-> read (null, $ id);

Теперь $ магазины будут содержать два массива [ 'Магазин'] => Array (.......) [ 'этаж'] => массив (........)

так что теперь, чтобы отобразить имя пола, вам нужно использовать $ магазин [ «этаж»] [ «floor_name»] вместо $ этаже [ «этаж»] [ «floor_name»]

1

Определить отношения с hasMany этаж в модель вашего магазина. В своей модели Floor определите соотношение belongsTo к магазину. Это позволит получить ваши связанные данные.

При получении данных с помощью $this->Shop->find('first', $arg), где $arg является поиск вариант массива, определите следующие

$arg['contains'] = array('Floor.name'); 

Теперь, вы должны получить то, что вы хотите.

Смежные вопросы