Я работаю над приложением Laravel, которое будет использовать структуру данных EAV. Требуемая структура должна работать следующим образом:
entity_types
- id = 1
- name = "Contact"
fields
- id = 1
- entity_type_id = 1
- name = "First Name"
- datatype = "text"
- id = 2
- entity_type_id = 1
- name = "Last Name"
- datatype = "text"
- id = 3
- entity_type_id = 1
- name = "Phone"
- datatype = "number"
entities
- id = 1
- entity_type_id = 1
values_text
- id = 1
- field_id = 1
- entity_id = 1
- id = 2
- field_id = 2
- entity_id = 1
values_number
- id = 1
- field_id = 3
- entity_id = 1
Проблема, с которой я сейчас сталкиваюсь, - это получение всех значений / полей из модели сущности. В основном мне нужно что-то вроде использования нескольких моделей в HasMany Relationship, чтобы базовая модель могла просматривать несколько таблиц. т.е.
public function values() : HasMany
{
return $this->hasMany([ValueText::class, ValueNumber::class]);
}
Я знаю, что есть и другие плагины, но они не полностью удовлетворяют мои потребности, и я хочу создать для этого индивидуально закодированное решение.
Спасибо за вашу помощь!
А может hasManyThrough? laravel.com/docs/5.7/eloquent-relationships#has-many-through
@Wreigh, спасибо за подсказку, дружище! @Philip разобрал его на полпути через hasManyThrough. Задача решена! Спасибо.






Думаю, что вам нужно, это morphMany? laravel.com/docs/5.7/…