Попытка получить данные «Город» из Event-> Venue-> City с помощью 'contain' в CakePHP
-
28-10-2019 - |
Вопрос
Я пытаюсь вернуть список events
и включить city
там, где это происходит.Однако город связан только через общий кодовый код события.
Ниже приведен код, который я использую.Он возвращает все правильные данные, но не возвращает НИКАКИХ данных о городе (кроме поля city_id в Venue - я не уверен, почему он возвращается).
Ассоциации:
родовое словоКод:
родовое словоБонусный ответ: (который я сейчас спросил в еще один вопрос StackOverflow ) - условия Date должны фильтровать, какие события появляются, но вместо этого они фильтруют только те данные Date, которые нужно отображать.
РАБОЧИЙ ОТВЕТ: (спасибо, bancer)
родовое словоРешение
Я бы рекомендовал избегать использования Containable.В некоторых случаях он генерирует слишком много запросов.Для сложных запросов лучше объединить таблицы "вручную" .
Другой вариант, который я бы рассмотрел в первую очередь, - это поиск по модели Venue без использования Containable, например: $this->Event->Venues->find('all', ...)
.Поскольку места проведения мероприятий напрямую связаны с городами и событиями, должно быть возможно получить желаемое без дополнительных сложностей.
Обновление: ознакомьтесь с вопросом Как изменить последовательность присоединений в CakePHP?
Другие советы
вместо того, чтобы содержать, вы пытались включить данные о городе в поля с помощью fields=> array ('', '', 'City.name)