CakePHP: Связь базы данных 1-ко-многим, ссылка 1-к-1

3 tables:

PaymentRequests
PaymentPurchaseOrders
PurchaseOrders

Current Relationship:

PaymentRequests -> HasMany -> PaymentPurchaseOrders -> BelongsTo ->PurchaseOrders

Current Codes on Controller:

$Get = $this->PaymentRequests->find(
    'all', [
        'contain'=>['PaymentPurchaseOrder'=>['PurchaseOrder']
    ]);

Problem:

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

вы можете написать 'contain'=>['PaymentPurchaseOrders.PurchaseOrders'] для небольшого упрощения, но я не вижу в этом смысла. Не могли бы вы объяснить, что именно слишком тяжело?

arilia 04.06.2018 13:57

Слишком много данных о PaymentPurchaseOrders замедляет работу системы. Вот почему я хочу реализовать ассоциацию на стороне модели.

Mae Cana 04.06.2018 13:58

вы можете выбрать, какие столбцы вы хотите получить, чтобы ограничить данные. Просто используйте select()

arilia 04.06.2018 14:19

Я ограничил поля, которые уже используются, 'fields' => ['id'], но данные слишком велики,

Mae Cana 04.06.2018 16:29

Затем обработайте его кусками. Простое и логичное следствие.

floriank 04.06.2018 16:30

разве это нельзя сделать в модели ?? может быть, использовать HMABT, [имеет много и принадлежит] ??

Mae Cana 04.06.2018 16:38

Я уже кэшировал свой запрос.

Mae Cana 04.06.2018 16:39

Проблема не в вашем запросе, проблема в том, что вы получаете данные ВСЕ с заданными условиями. Если у вас возвращено больше данных, чем разрешено php потреблять память, у вас заканчивается память, или для выполнения запроса просто требуется много времени, и он прерывается, потому что максимальное время выполнения запроса, вероятно, ограничено 30 или 60 секундами в зависимости от вашей конфигурации . Увеличение этого нет решение, просто пакетная обработка данных. Возможно, вы захотите узнать, как данные хранятся и обрабатываются в компьютерной системе.

floriank 05.06.2018 10:58

В моих настоящих кодах я уже ограничивал поля, используя, ['fields'] => ['id', 'created'] и так далее ... Я проигнорировал это в своем вопросе, чтобы сделать вопрос менее сложным.

Mae Cana 06.06.2018 02:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
9
46
0

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