ArbNet

ArbNet
Рейтинг
140
Регистрация
27.10.2019
Программист самоучка
Aisamiery #:
Что конкретно требуется от форумчан? 

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

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

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

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

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

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

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

JJizn #:

А такие есть? Мне кажется SQL любой студент знает, причем не как язык, а как приложение у основному - будь то шарпист, пхпшник или java-программист. Кроме чистого фронтенда его все должны знать по умолчанию, а так как у вас БД, то вообще все.

Согласен, что без знаний как делаются SQL запросы даже с современными ORM будет сложновато проектировать сущности и работать с ними. Но всё же думаю если определить некие модели(таблиц и их связей) объяснить людям как с ними работать в коде, то не зная SQL можно будет работать с данными, а система уже эти данные будет добавлять, изменять, удалять при необходимости в базе данных сама(причём это может быть несколько разных БД). По мне это намного упростит и ускорит работу создания сайтов.

Sly32 #:

Помню как ты кричал, что никакая ОРМ тебе не нужна, облажался и полез делать и снова облажался..

Модеры, закрывайте этот бред, короче

Ничего не облажался. Тогда сделал составление данных сущности из разных таблиц, у каждой таблицы только два поля id и значение тип данных которого разный. И данные для сущности собирались по её описанию. Система рабочая, в принципе можно использовать, возможно под какие либо задачи это буду применять.

Я не стою на месте, ORM в таком виде какие они сейчас есть мне действительно не нужны. Но всё же я решил сделать для своего фреймворка свою ORM для облегчения людям работы с БД и др. источниками данных. Мне понравилась сама идея, что людям не нужно самим писать SQL запросы, даже знать как и что хранится в базе, просто проектировать нужные сущности, а ORMка сделает всю нужную работу в БД, вот только реализация ужасная.. идея норм, я могу сделать своё и лучше, так почему я этого не должен делать. Почему ты пытаешься меня постоянно остановить, для чего это тебе нужно?

ЗЫ. Отвали уже.

Sly32 #:

Как обычно, трепло, только и умеешь что оскорблять, ничего сам из себя не представляя. Ты даже не догоняешь, для чего в принципе нужны ОРМ, приходишь попозорится. Надоел.

Это ты уже всем надоел. Я я я, да у меня, как у коня.. машина круче всех, ноутбук сам проги пишет, компания веников не вяжет и тд.

А я потихоньку сопя делаю своё дело, да сложно одному, хочется стороннее мнение узнать, как что сделать, поэтому и создаю темы опять же в надежде найти единомышленников, но мышленников то нет, одни возмущения, что кто-то чего-то в этой жизни добивается, надо ж как мышки сидеть тихонько как все.. дальше сами мысль продолжите... хотя.. (навряд-ли продолжите т.к. мыслить то не умеете..)

Sly32 #:

Покажи пример реализации а не рассказывай сказки

Я для чего тут тему создал? Чтобы обсудить как что сделать. Сырое ещё, довожу до ума.

Да и выкладывать ничего не собираюсь раз от вас помощи никакой нет, а только отсыл на разный говнокод..

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

Sly32 #:
покажи как он будет выглядеть в твоей ОРМке

Включи мозг. Запрос к базе ничем не будет отличатся, также будут джониться таблицы.

Кроме того запросы могут быть и через таблицу и через ту таблицу которая через и тд. намного сложнее чем простое добавление(JOIN LEFT|RIGHT|FULL). И все запросы будет составлять ORMка в зависимости от связей таблиц, а в коде зная связи можно получать данные например зная только id из одной таблицы которая имеет связь с второй, вторая с третьей и четвёртой из которых получить доступ к пятой по определённому отбору. Тебе с твоим ущербным мозгом никогда такой запрос не составить, а моя ORMка легко это сделает.

Такие страницы уже есть: гугл и яндекс называются :) задаёшь вопрос - получаешь ответ
lutskboy #:

зачем самому себе усложнять жизнь?

Я не себе усложняю, а другим облегчаю.

К примеру: посмотрите видео как в RedBean можно работать с БД не написав ни одного SQL запроса https://www.youtube.com/watch?v=iU8zlbkpwyo

Для кодеров которые не знают SQL это замечательная штука. Но для нормальных прогеров это куча ~500кб с каждой обработки формирования страницы и ненужных\лишних запросов и тд. Проще как вы прописать нужный запрос и всё.

НО, сама задумка ORM не плохая(людям не надо изучать SQL), вот только реализация как обычно.. хотели как лучше, а получилось как всегда.. Поэтому я разработал свой фреймворк, и для облегчения работы с БД я написал свою ORM,  которая быстрая, всего 3 класса, в которых ~ по 100-200 строк кода, в отличии от того же редбин, в котором 17к строк. Человеку не нужно будет ничего изобретать, прикручивать редбин, доктрин или ещё что то. Легко получать,  изменять, удалять, добавлять данные и просто с ними работать не составляя никаких SQL запросов,  с любой базой данных или удалённым xml, json, yaml, др. файлом и тд.

Sly32 #:

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

Ну и опять же о голословности. Я тебе пример пример ормки из симфони - ты в состоянии это переписать понятнее? Челлендж? Я даже не буду арбитром, мне лень разбираться в пхп коде, форумчане рассудят.

По факту ты бы мог прикрутить эту ОРМ и пойти дальше к к готовому продукту, а ты опять придумываешь квадратные колеса.

Завязывай уже меня смешить 😀

Всего: 2175