Связи таблиц, точнее функционал ORM для работы с БД

1 23
ArbNet
На сайте с 27.10.2019
Offline
140
#21
Дикий пионер #:
Насколько я понял из стартпоста - проблема, грузить ли все связи сразу или по запросу полей. Для этого есть термины lazy load, eager load, насколько я в курсе. Мне кажется, что это надо сделать конфигурируемым, а то если вытаскивать всегда и всё - есть риск за один запрос какого-нито пользователя всю базу вытащить.

Когда создавал тему я не понимал как сделать модели связей. Сейчас у меня есть понимание, так как я долго сидел над листком бумаги, прорисовывал разные варианты, затем проверял свои теории делая тестовые таблицы и запросы, процедуры и функции. Сейчас у меня есть чёткое понимание, что и как будет работать, дело как говорится за малым, осталось только это реализовать в коде.

Итак, пока опишу словами как у меня сделано и как собираюсь сделать для связей таблиц(сущностей).

Есть класс данных(Data) через который указываются источник данных, параметры отбора данных, производится загрузка данных. Все данные находятся этом классе в виде массивов. Для работы с данными нужно получить сущность $Entity=$data->alias; где $Entity - объект сущности с которым далее можно работать, а alias - это наименование сущности. Работа с сущностью простая, для получения свойства $Entity->svoystvo, для изменения $Entity->svoystvo='значение' и тд. Система всю работу с базой будет делать сама, изменять, удалять и тд.

Теперь как я сделаю чтобы связать сущность с другими таблицами. Для связи с какой либо таблицей добавляется поле с определённым типом, ограничениями и тд. Для связи многие ко многим я буду использовать нестандартный подход, который тестировал с применением процедуры, созданием динамически запроса и работой с JSON данными. В коде можно вызвать функцию и увидеть маршруты всех связей данной сущности. Затем перед получением данных указывается пути к нужным данным, система загружает эти данные, далее с ними можно работать как описано выше. Если в сущности будут произведены изменения, то эти изменения будут отражены и в базе данных. При необходимости можно подгружать данные как выше было сказано про ленивую загрузку.

ArbNet
На сайте с 27.10.2019
Offline
140
#22
Aisamiery #:
Что конкретно требуется от форумчан? 

Уже ничего. Бывают моменты кода не знаешь как что сделать. Напишешь публично на форуме о своей боли и через некоторое время проблемы волшебным образом решаются.

ЗЫ. Удивительно, но это работает. Спасибо всем, что отвечаете, пусть не по теме и далеко от сути вопроса, всё же это помогает сдвинутся и идти дальше. Sly32, извини, хотелось бы  чтобы своими мозгами зашевелил, конструктивного общения и обсуждения вариантов решения, а не отсылки на уже готовые, в моём случае не интересные решения. Так как у меня тоже есть инет и я тоже умею гуглить...

1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий