Кому то другому не стал бы отвечать, но у вас пытливый ум и обширные знания. Я долгое время не занимался веб разработками поэтому что и не знал забыл, сейчас учусь практически заново, конечно я плаваю в теме. И у меня манера сразу приступать к делу и по ходу уже решать разные задачки как это сделать. Есть идеи, но нет знаний в данном случае конструкций запросов mysql.
Я сейчас делаю PHP драйвер для получения данных сущности из MySql.
У меня не простой запрос, как обычно делается, задаётся некоторое условие выборки и поля которые нужно получить.
Идея следующая.
Есть так скажем стандартные таблицы под определённый тип данных. Например: Integer, Text и тд. В этих таблицах по два поля id и value
Теперь я могу в коде PHP прописать структуру сущности в простом массиве
$info= [ "svoystvo1" => "Integer", "svoystvo2" => "Text",];
То есть передав в драйвер массив структуры сущности, драйвер будет искать данные в разных таблицах Integer и Text соответственно и возвратит этот же массив сущности но уже с данными.
А чтобы выборка данных была быстрее я создал таблицу записей сущностей в которой поля name(имя сущности) и record(массив id строк значений свойств).
То есть в начале запроса происходит получение данных record потом формируется запрос с выборкой из разных таблиц данных по id
Я знаю про внешний ключ. По началу думал добавить ещё поле в таблицы данных по которому отслеживать принадлежность этих данных, но лишние манипуляции с дополнительным полем мне тут как-то не нужны, поэтому стал искать другие варианты.---------- Добавлено 23.05.2020 в 10:44 ----------Stek, Спасибо. Поэкспериментирую с триггерами.
Если кому интересно, вот описание как их применять https://habr.com/ru/post/37693/
Спасибо, скачал, почитаю.
habr.com/ru/post/488054
Почитал. Не то.. Примитивное создание дополнительной таблицы и полей, но наверно по другому не получится, не реализовано в mysql взаимосвязей скорее всего
Ещё вопрос.
Есть ли в MySql такой механизм отслеживающий ссылается ли что-то на строку данных или нет, и если нет то её можно удалить, иначе нельзя.
Немного поясню. Есть две или более сущностей и какие либо их записи ссылаются на данные одной и той же таблицы.
Допустим возникает момент когда удаляются эти записи сущностей и на данные той таблицы никто уже не ссылается их также можно удалить, как такой механизм можно реализовать?
Умный человек пояснит, а глупый будет злорадствовать.
Aisamiery, спасибо за пояснение. Я полгода буквально всё заново стал изучать, поэтому путаюсь, уж извините за глупые вопросы :) У меня по поводу MySql процедурам и функциям возник вопрос, думаю надо тему создать, есть идея но как это реализовать...
А перед обращением к объекту его разве не надо создать
$DB=new DB(); echo $DB::method();
Если бы был знак $ перед $DB::query вопросов нет
::query - да, статичный метод
К статичному методу класса обращаются через self::$query или извне $DB::$query
А вот это "DB::query" мне не понятно стало
Извиняюсь, конечно, последнее время писал только на JS, PHP подзабывать стал
А мне интересно стало "DB::query" у вас объект базы данных присвоен PHP константе? по типу: define('DB',DataBase::Instance());
Anamnado, Изучай CSS делай сам или заказывай разработку\настройку нужного тебе меню, тут других вариантов нет. Я показал принцип показа подменю по клику, чтобы довести до ума надо знать CSS и думаю ещё JS нужен чтобы скрыть открытое подменю при клике на другой пункт, иначе не красиво будет.
С CSS совсем не дружишься?
Чем выпадающее меню не нравится? например https://snipp.ru/html-css/main-menu
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>Тест</title> <style> ul.menu { display: flex; list-style: none; } ul.menu li { margin: 0.5em; padding: 0.3em; border: 1px solid; } ul.menu input, ul.menu ul {display: none} ul.menu input:checked ~ ul {display: block} ul.menu ul { position: relative; } ul.menu li ul { left: 0.5em; position: absolute; } </style></head> <body><ul class="menu"> <li><label for=m1>Пункт 1</label> <input id=m1 type="checkbox"> <ul class="menu"> <li>Подменю 1</li> <li>Подменю 2</li> </ul> </li> <li>Пункт 2</li></ul></body><script></script></html>
Вот тебе мой велосипед, дальше сам додумаешь...