Попытка получить данные «Город» из Event-> Venue-> City с помощью 'contain' в CakePHP

StackOverflow https://stackoverflow.com/questions/6378701

Вопрос

Я пытаюсь вернуть список events и включить city там, где это происходит.Однако город связан только через общий кодовый код события.

Ниже приведен код, который я использую.Он возвращает все правильные данные, но не возвращает НИКАКИХ данных о городе (кроме поля city_id в Venue - я не уверен, почему он возвращается).

Ассоциации:

родовое слово

Код:

родовое слово

Бонусный ответ: (который я сейчас спросил в еще один вопрос StackOverflow ) - условия Date должны фильтровать, какие события появляются, но вместо этого они фильтруют только те данные Date, которые нужно отображать.


РАБОЧИЙ ОТВЕТ: (спасибо, bancer)

родовое слово
Это было полезно?

Решение

Я бы рекомендовал избегать использования Containable.В некоторых случаях он генерирует слишком много запросов.Для сложных запросов лучше объединить таблицы "вручную" .

Другой вариант, который я бы рассмотрел в первую очередь, - это поиск по модели Venue без использования Containable, например: $this->Event->Venues->find('all', ...).Поскольку места проведения мероприятий напрямую связаны с городами и событиями, должно быть возможно получить желаемое без дополнительных сложностей.

Обновление: ознакомьтесь с вопросом Как изменить последовательность присоединений в CakePHP?

Другие советы

вместо того, чтобы содержать, вы пытались включить данные о городе в поля с помощью fields=> array ('', '', 'City.name)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top