Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Всем привет, хочу сделать eav модель. как можно реализовать? я имею проектирование,кто-то делал на этом фреймворке?
типа такое http://www.elisdn.ru/blog/31/dinamiches … -eav-v-yii
Не в сети
Создаёте все нужные модели, прописываете в них отношения друг с другом, строите нужные запросы. Рядовая задача.
Или в чём-то конкретном вопрос?
Не в сети
Создаёте все нужные модели, прописываете в них отношения друг с другом, строите нужные запросы. Рядовая задача.
Или в чём-то конкретном вопрос?
Связи с ним все понятно. Этих же полей нужно еще показать как инпут, как выпадающий список итд,тип храниться в type, и как перехватит такие посты. Добавить итд. По этому подробнее.
Структура таблицы пока такой.
tbl_attribute:
id (первичный ключ)
name (название поля)
type (тип значения: text, checkbox, ...)
tbl_attribute_value:
id (первичный ключ)
ref_id (внешний ключ, ссылающийся на задачу итд)
attribute_id (внешний ключ, ссылающийся на описание атрибута tbl_attribute)
value (значение)
где ref_id будет ID контакта и задач итд (то есть разные ид) как он по ид будет знать что это ид контакта и задач?
Не думаю что это рядовая задача
Изменено Nelzz (12.11.2014 08:00:56)
Не в сети
Ну, судя по всему, Вы всё правильно расписали. Вам интересно, как из этого сделать форму для заполнения свойств, отображать данные, формировать фильтр или ещё что? Какая именно проблема у Вас?
Если речь идёт о форме, то возьмите плагинчик типа select2 и сделайте typeahead поиск по свойствам + создание нового свойства, если не найдено. Тип поля - сделайте простой select для выбора значений (можно сделать и chain select на поле выбора названия свойства от типа). Значение свойства вводите в инпут, связанный с этим инпутом. Такую связку (поле выбора типа, ввода названия свойства + его значения) сделайте паттерном, который будет добавляться по нажатию кнопочки "добавить свойство". В итоге, когда происходит сохранение, то пробегаетесь по всем свойствам, сохраняете их и связываете с редактируемым объектом.
Когда отображаете данные, то ищите объект и загружаете его свойства - тут всё просто: пользуйте with(''). Тип поля у вас уже зафиксирован - можно использовать его, если требуется.
С фильтром тоже всё относительно просто: выводите все возможные связки свойств и значений. Тип поля для формирования фильтра у вас имеется...
Задача, на самом деле, для всякого рода e-commerce рядовая (как для формирвоании данных, так и для их хранения). Какого-то механизма для реализации всего этого из коробки можно поискать, но мне кажется разве что в разрозненном виде всё - придётся всё равно собирать. А раз так, то, как мне кажется, полезней будет собрать самому: будет понятней, как оно работает и проще будет поддерживать...
Не в сети
Ну, судя по всему, Вы всё правильно расписали. Вам интересно, как из этого сделать форму для заполнения свойств, отображать данные, формировать фильтр или ещё что? Какая именно проблема у Вас?
Если речь идёт о форме, то возьмите плагинчик типа select2 и сделайте typeahead поиск по свойствам + создание нового свойства, если не найдено. Тип поля - сделайте простой select для выбора значений (можно сделать и chain select на поле выбора названия свойства от типа). Значение свойства вводите в инпут, связанный с этим инпутом. Такую связку (поле выбора типа, ввода названия свойства + его значения) сделайте паттерном, который будет добавляться по нажатию кнопочки "добавить свойство". В итоге, когда происходит сохранение, то пробегаетесь по всем свойствам, сохраняете их и связываете с редактируемым объектом.
Когда отображаете данные, то ищите объект и загружаете его свойства - тут всё просто: пользуйте with(''). Тип поля у вас уже зафиксирован - можно использовать его, если требуется.
С фильтром тоже всё относительно просто: выводите все возможные связки свойств и значений. Тип поля для формирования фильтра у вас имеется...
Задача, на самом деле, для всякого рода e-commerce рядовая (как для формирвоании данных, так и для их хранения). Какого-то механизма для реализации всего этого из коробки можно поискать, но мне кажется разве что в разрозненном виде всё - придётся всё равно собирать. А раз так, то, как мне кажется, полезней будет собрать самому: будет понятней, как оно работает и проще будет поддерживать...
Не какой фильтр select2 не нужен
Вы не много,не правильно поняли. Посмотрите http://demo.cartalyst.com/attributes/ Атрибуты отображаеться в пациентах. Так вот при добавление пациента он же показывает все атрибуты c типами, как мне теперь сохранить все атрибуты в пациентах который я добавил?
Мне нужен точно как тут http://demo.cartalyst.com/attributes/
Давай сделаем двоем,точно такое и закинем в гит? опенсоурс будет
Не в сети
Ну, я на самом деле понял чуть более широко. Я думал, что у вас разные свойства для разных объектов и разные значения этих свойств могут быть (как в Яндекс маркете, паример: типов продуктов - бесконечность, свойств - бесконечность, связи у всех объектов - многие-ко-многим).
При подходе, что свойства и типы конечны - всё упрощается донельзя! Просто отображаете все свойства в форме и всё. Создавайте объекты последовательно, в соответствии со связями (сначала пациент, потом его атрибуты). Валидировать же желательно всё сразу, чтобы не было проблем с тем, что один объект создан, а на втором всё крашится (либо делать обработку и подстановку идентификаторов в случае сохранения чего-то).
Если нравится пакет от каталиста - возьмите его. Задача в целом достаточно разносторонняя и зачастую требует индивидуального подхода, ибо антипаттерн. То, как оно должно работать в том или ином случае предусмотреть, имхо, сложно. Сделать же чисто один из нескольких вариантов реализации - не принесёт славы...
Вот, посмотрите вот эту темку: https://laracasts.com/discuss/channels/ … -eav-model
Там и человек есть, который ведёт работу над подобным пакетом...
Не в сети
Самое больное место это ref_id (внешний ключ, ссылающийся на задачу итд) мне тоже уже начался не нравиться этот паттерн.
тут например product_id идет только на товар http://www.elisdn.ru/blog/31/dinamiches … -eav-v-yii
в нашем случае в месте product_id должен быть разные ид задач и контакта. Он подходит для ИМ итп. По моему надо вообще искать другой паттерн и подумать
Изменено Nelzz (12.11.2014 11:28:02)
Не в сети
Вот и я о том же - нужно искать решение по задаче. Оно вообще может быть простым, если реализовать тот минимум, что необходим и своими руками...
Не в сети
Вот и я о том же - нужно искать решение по задаче. Оно вообще может быть простым, если реализовать тот минимум, что необходим и своими руками...
аха своими руками) Я ларой 1месяц 15дней работаю до этого на yii писал там с этим не трудно,все есть в инете.
С ларой все трудней. Тепер я понимаю этого чувака) http://www.yiiframework.com/forum/index … _p__226619
Изменено Nelzz (12.11.2014 12:27:41)
Не в сети