Laravel по-русски

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

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

#1 11.11.2014 12:11:06

Eav

Всем привет, хочу сделать eav модель. как можно реализовать? я имею проектирование,кто-то делал на этом фреймворке?

типа такое http://www.elisdn.ru/blog/31/dinamiches … -eav-v-yii

Не в сети

#2 11.11.2014 17:10:02

Re: Eav

Создаёте все нужные модели, прописываете в них отношения друг с другом, строите нужные запросы. Рядовая задача. smile

Или в чём-то конкретном вопрос?

Не в сети

#3 12.11.2014 07:55:24

Re: Eav

SMGladkovskiy пишет:

Создаёте все нужные модели, прописываете в них отношения друг с другом, строите нужные запросы. Рядовая задача. smile

Или в чём-то конкретном вопрос?

Связи с ним все понятно. Этих же полей нужно еще показать как инпут, как выпадающий список итд,тип храниться в type, и как перехватит такие посты. Добавить итд. По этому подробнее.

Структура таблицы пока такой.

tbl_attribute:

id (первичный ключ)
name (название поля)
type (тип значения: text, checkbox, ...)

tbl_attribute_value:

id (первичный ключ)
ref_id (внешний ключ, ссылающийся на задачу итд)
attribute_id (внешний ключ, ссылающийся на описание атрибута tbl_attribute) 
value (значение)

где ref_id будет ID контакта и задач итд (то есть разные ид) как он по ид будет знать что это ид контакта и задач?

Не думаю что это рядовая задача  smile

Изменено Nelzz (12.11.2014 08:00:56)

Не в сети

#4 12.11.2014 08:48:26

Re: Eav

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

Если речь идёт о форме, то возьмите плагинчик типа select2 и сделайте typeahead поиск по свойствам + создание нового свойства, если не найдено. Тип поля - сделайте простой select для выбора значений (можно сделать и chain select на поле выбора названия свойства от типа). Значение свойства вводите в инпут, связанный с этим инпутом. Такую связку (поле выбора типа, ввода названия свойства + его значения) сделайте паттерном, который будет добавляться по нажатию кнопочки "добавить свойство". В итоге, когда происходит сохранение, то пробегаетесь по всем свойствам, сохраняете их и связываете с редактируемым объектом.

Когда отображаете данные, то ищите объект и загружаете его свойства - тут всё просто: пользуйте with(''). Тип поля у вас уже зафиксирован - можно использовать его, если требуется.

С фильтром тоже всё относительно просто: выводите все возможные связки свойств и значений. Тип поля для формирования фильтра у вас имеется...

Задача, на самом деле, для всякого рода e-commerce рядовая (как для формирвоании данных, так и для их хранения). Какого-то механизма для реализации всего этого из коробки можно поискать, но мне кажется разве что в разрозненном виде всё - придётся всё равно собирать. А раз так, то, как мне кажется, полезней будет собрать самому: будет понятней, как оно работает и проще будет поддерживать...

Не в сети

#5 12.11.2014 09:38:45

Re: Eav

SMGladkovskiy пишет:

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

Если речь идёт о форме, то возьмите плагинчик типа select2 и сделайте typeahead поиск по свойствам + создание нового свойства, если не найдено. Тип поля - сделайте простой select для выбора значений (можно сделать и chain select на поле выбора названия свойства от типа). Значение свойства вводите в инпут, связанный с этим инпутом. Такую связку (поле выбора типа, ввода названия свойства + его значения) сделайте паттерном, который будет добавляться по нажатию кнопочки "добавить свойство". В итоге, когда происходит сохранение, то пробегаетесь по всем свойствам, сохраняете их и связываете с редактируемым объектом.

Когда отображаете данные, то ищите объект и загружаете его свойства - тут всё просто: пользуйте with(''). Тип поля у вас уже зафиксирован - можно использовать его, если требуется.

С фильтром тоже всё относительно просто: выводите все возможные связки свойств и значений. Тип поля для формирования фильтра у вас имеется...

Задача, на самом деле, для всякого рода e-commerce рядовая (как для формирвоании данных, так и для их хранения). Какого-то механизма для реализации всего этого из коробки можно поискать, но мне кажется разве что в разрозненном виде всё - придётся всё равно собирать. А раз так, то, как мне кажется, полезней будет собрать самому: будет понятней, как оно работает и проще будет поддерживать...

Не какой фильтр select2 не нужен

Вы не много,не правильно поняли. Посмотрите http://demo.cartalyst.com/attributes/ Атрибуты отображаеться в пациентах. Так вот при добавление пациента он же показывает все атрибуты c типами, как мне теперь сохранить все атрибуты в пациентах который я добавил?

Мне нужен точно как тут http://demo.cartalyst.com/attributes/

Давай сделаем двоем,точно такое и закинем в гит? опенсоурс будет smile

Не в сети

#6 12.11.2014 10:22:08

Re: Eav

Ну, я на самом деле понял чуть более широко. wink Я думал, что у вас разные свойства для разных объектов и разные значения этих свойств могут быть (как в Яндекс маркете, паример: типов продуктов - бесконечность, свойств - бесконечность, связи у всех объектов - многие-ко-многим).

При подходе, что свойства и типы конечны - всё упрощается донельзя! Просто отображаете все свойства в форме и всё. Создавайте объекты последовательно, в соответствии со связями (сначала пациент, потом его атрибуты). Валидировать же желательно всё сразу, чтобы не было проблем с тем, что один объект создан, а на втором всё крашится (либо делать обработку и подстановку идентификаторов в случае сохранения чего-то).

Если нравится пакет от каталиста - возьмите его. Задача в целом достаточно разносторонняя и зачастую требует индивидуального подхода, ибо антипаттерн. То, как оно должно работать в том или ином случае предусмотреть, имхо, сложно. Сделать же чисто один из нескольких вариантов реализации - не принесёт славы...

Вот, посмотрите вот эту темку: https://laracasts.com/discuss/channels/ … -eav-model
Там и человек есть, который ведёт работу над подобным пакетом...

Не в сети

#7 12.11.2014 11:19:28

Re: Eav

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

тут например product_id идет  только на товар http://www.elisdn.ru/blog/31/dinamiches … -eav-v-yii

в нашем случае в месте product_id должен быть разные ид задач и контакта. Он подходит для ИМ итп. По моему надо вообще искать другой паттерн и подумать smile

Изменено Nelzz (12.11.2014 11:28:02)

Не в сети

#8 12.11.2014 11:33:10

Re: Eav

Вот и я о том же - нужно искать решение по задаче. Оно вообще может быть простым, если реализовать тот минимум, что необходим и своими руками... wink

Не в сети

#9 12.11.2014 12:21:23

Re: Eav

SMGladkovskiy пишет:

Вот и я о том же - нужно искать решение по задаче. Оно вообще может быть простым, если реализовать тот минимум, что необходим и своими руками... wink

аха своими руками) Я ларой 1месяц 15дней работаю smile до этого на yii писал там с этим не трудно,все есть в инете.

С ларой все трудней. Тепер я понимаю этого чувака) http://www.yiiframework.com/forum/index … _p__226619

Изменено Nelzz (12.11.2014 12:27:41)

Не в сети

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