2015-08-22 5 views
1

У меня есть следующие таблицы:Динамические таблицы и модели в Laravel 5

pages 
    id 
    title 
    ... 

dynamic_table_1_infos 
    id 
    page_id 
    image_id 
    dynamic_field_1 
    dynamic_field_2 
    ... 

dynamic_table_2_infos 
... 

Так Есть «один ко многим» отношений.

Можно ли использовать общий подход, не создавая динамическую таблицу [No] Info «на лету» для каждой таблицы?

А что, если мне потребуются дополнительные методы в этих моделях?

Модель «Страница» будет иметь множество связей с таблицами dynamic_table_ [no] _infos ». Поэтому мне, вероятно, понадобится общий метод для этого. (Имеет много dynamic_table_1_infos/имеет много dynamic_table_2_infos ...)

То, что я пытаюсь сделать, каким-то образом вдохновлено типами контента Dupal.

+1

Что Я делаю, когда не уверен в структуре данных, храню все это как JSON. Это может решить вашу проблему. Это замечательно в Laravel или PHP, потому что вы можете проанализировать JSON как объекты. Однако я уверен, что это плохая практика. В любом случае, вы можете создать общую таблицу dynamic_info, а затем просто иметь столбцы, 'id',' page_id', а затем, наконец, столбец 'data', в котором вы могли бы хранить ваши динамические данные как JSON. – noahdotgansallo

ответ

0

Если вы хотите сохранить единую модель данных для нескольких таблиц в зависимости от значения некоторого атрибута модели, вам необходимо переопределить модели GetTable() метод возвращает имя таблицы, что нужно записать.

Я не знаю, как вы хотите, чтобы решить, какие таблицы Eloquent следует сохранить - например, если вы имели атрибут сегмент в вашем режиме, вы можете просто сделать:

public function getTable() { 
    return 'dynamic_table_' . $this->segment . '_infos'; 
} 
+0

Динамическая модель может иметь, например, изображение_ид (также динамическое добавление). Модель будет создана «на лету», и мне нужно будет добавить в нее отношения «на лету», чтобы вручную не редактировать ее. («идентификатор изображения» относится к модели «Изображение»). –

+0

Я понятия не имею, что вам нужно. Не могли бы вы привести еще несколько примеров? И скажите мне, ПОЧЕМУ, что вам нужно такое нестандартное поведение? –

+0

То, что я хочу построить, каким-то образом вдохновлено типами контента Drupal. В моем случае у каждого типа контента есть пользовательская таблица (статья с x полями/продуктом с y-полями и т. Д.). Вручную легко, но я хотел бы иметь для этого интерфейс администратора. Поэтому, когда я добавляю тип контента, я могу создать dynamic_table_1_infos, 2, 3 и т. Д. Я могу создать даже модели с помощью команды Artisan, но я не знаю, как это сделать. Например, динамическая таблица может иметь ссылку на изображение из таблицы изображений. –