Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.01.2019 17:49:08

Помогите организовать структуру таблиц mysql

Мне попался проект, не имеющий структуры взаимодействия компонентов и стоит задача перевести все это на laravel. К сожалению, я новичок в работе с этим фреймворком и мне нужна помощь в организации имеющихся баз для того, чтобы можно было просто потом создавать модели и связи между ними.
У меня имеются счетчики трех типов: водные, тепловые и электрические. Есть здания, за каждым из которых закреплено определенное количество счетчиков. Например, здание №2 может иметь 3-4 счетчика разных типов. Также имеется таблица потреблений, в ней и заключается проблема. Дело в том, что таблица потреблений для каждого из счетчиков имеет разные поля. Например, электросчетчики записывают 4 разных электрических параметров, счетчик воды записывает в базу только один, у теплового - также множество своих.
Я набросал приблизительно СХЕМУ.
Таблицы потреблений реорганизовать скорее всего не получится (то есть их должно быть три), но буду рад прочитать все варианты.

Хотелось бы в итоге иметь возможность обращаться к базе, например, так:
meter(id)->consumptions(дата?)
где я получал бы потребление счетчиком в определенное время

meter(id)->building() // здание, за которым закреплен счетчик
building(id)->meters() // счетчики, закрепленные за зданием

И пр. Короче, самые простые взаимодействия.

Не в сети

#2 11.01.2019 00:38:29

Re: Помогите организовать структуру таблиц mysql

Мне кажется вы напрасно усложняете задачу.

У вас ведь уже есть структура таблиц. Вы хотите её переделать вместо того чтобы адекватно отобразить существующую на модели Laravel. Зачем?


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#3 11.01.2019 00:50:09

Re: Помогите организовать структуру таблиц mysql

Я бы начал с описания классов-моделей вместе с отношениями — для существующих таблиц. Проверил бы корректную работу CRUD для каждого класса. Затем создал бы миграции с помощью Migrations Generator. Он не идеален, но бОльшую часть работы сделает. На отдельной базе проверил бы адекватность этих миграций.

После этого можно какую-то логику писать, заглядывая в оригинальный проект. Ведь задача стоит "переписать", а не "сочинить". Рефакторинг не должен менять поведение системы!

https://laravel.com/docs/5.7/eloquent
https://github.com/Xethron/migrations-generator


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#4 11.01.2019 00:53:39

Re: Помогите организовать структуру таблиц mysql

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

https://laravel.com/docs/5.7/eloquent-r … ationships


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела