Size: a a a

2020 September 24

d.

dev . in Laravel Pro
Oleksandr Kravchenko
Привет.
Есть очень древний проект "CMS". Это что то типо мультисайтовой CMS. Со временем он стал выраждается в простой фраймворк. Т.е. в нем стало больше пользовательского php  кода со своей логикой.  От CMS осталось редактирование контента на странице(x-editable/tinymce inline) и управление моделями.  Стал вопрос в переезде на современный фраймворк. От мультисайта можно отказаться в сторону нескольких инстансов.
Вопрос как лучше организовать структуру и разделить код "ядра" и сайта?
Так чтобы можно было отдельно обновлять "CMS" или код сайта.

Я вижу три варианта:
1. просто взять проект laravel и в нем написать ядро, а код сайта вынести в отдельную папку.
2. "ядро" разбить по пакетам и подключать к новому проекту (код сайта). Выглядит лучше, но все ли я могу делать из пакетов? и  выглядит для меня более накладно как разработчика "ядра"
3. Laravel не подходит для это, лучше возьми другой фраймфорк.
работает-не трож
источник

VV

Valeriu Vodnicear in Laravel Pro
есть 3 таблицы:

country
   id - integer
   iso_1 - string
   phone_code - string

language
   id - integer
   name - string

country_translate
   country_id - integer
   language_id - integer
   name - string

Как правильно настроить связь между country и country_translate?

Сделать ли отдельную модель CountryTranslate?

сущностей много, пример с country самый простой, языков много (> 100), и они должны динамически добавляться, вот почему не подошел вариант держать их в таблице country в колонках name_en, name_ru
источник

A

Arman in Laravel Pro
Valeriu Vodnicear
есть 3 таблицы:

country
   id - integer
   iso_1 - string
   phone_code - string

language
   id - integer
   name - string

country_translate
   country_id - integer
   language_id - integer
   name - string

Как правильно настроить связь между country и country_translate?

Сделать ли отдельную модель CountryTranslate?

сущностей много, пример с country самый простой, языков много (> 100), и они должны динамически добавляться, вот почему не подошел вариант держать их в таблице country в колонках name_en, name_ru
готовые пакеты не смотрели? вроде по моделям тоже делали
источник

VV

Valeriu Vodnicear in Laravel Pro
Arman
готовые пакеты не смотрели? вроде по моделям тоже делали
для такой локализаций еще не видел готовых пакетов
источник

NO

Nex Otaku in Laravel Pro
translate
 id
 model_id - ID country
 model_type - country table
 model_field - name
 language_id
 value
источник

VY

Vadym Yakovenko in Laravel Pro
Valeriu Vodnicear
есть 3 таблицы:

country
   id - integer
   iso_1 - string
   phone_code - string

language
   id - integer
   name - string

country_translate
   country_id - integer
   language_id - integer
   name - string

Как правильно настроить связь между country и country_translate?

Сделать ли отдельную модель CountryTranslate?

сущностей много, пример с country самый простой, языков много (> 100), и они должны динамически добавляться, вот почему не подошел вариант держать их в таблице country в колонках name_en, name_ru
источник

VY

Vadym Yakovenko in Laravel Pro
готовое решение
источник

VV

Valeriu Vodnicear in Laravel Pro
спасибо за готовое решение, буду его использовать, но все-же вопрос открыт

как правильно связь сделать?
новую модель CountryTranslate сделать? и добавить связь BelongToMany ?

сейчас должен в Laravel Nova эту связь добавить
источник

IM

Igor Melnychuk in Laravel Pro
Valeriu Vodnicear
спасибо за готовое решение, буду его использовать, но все-же вопрос открыт

как правильно связь сделать?
новую модель CountryTranslate сделать? и добавить связь BelongToMany ?

сейчас должен в Laravel Nova эту связь добавить
country_translate => country_translations
источник

IM

Igor Melnychuk in Laravel Pro
country => countruies
источник

IM

Igor Melnychuk in Laravel Pro
language => languages
источник

IM

Igor Melnychuk in Laravel Pro
Для начала можно привести таблицы к единому стандарту
источник

VV

Valeriu Vodnicear in Laravel Pro
Igor Melnychuk
Для начала можно привести таблицы к единому стандарту
понимаю, но это другая тема
источник

A

Arman in Laravel Pro
Valeriu Vodnicear
спасибо за готовое решение, буду его использовать, но все-же вопрос открыт

как правильно связь сделать?
новую модель CountryTranslate сделать? и добавить связь BelongToMany ?

сейчас должен в Laravel Nova эту связь добавить
зачем нужна модель новая? обычная промежуточная таблица
источник

IM

Igor Melnychuk in Laravel Pro
Valeriu Vodnicear
есть 3 таблицы:

country
   id - integer
   iso_1 - string
   phone_code - string

language
   id - integer
   name - string

country_translate
   country_id - integer
   language_id - integer
   name - string

Как правильно настроить связь между country и country_translate?

Сделать ли отдельную модель CountryTranslate?

сущностей много, пример с country самый простой, языков много (> 100), и они должны динамически добавляться, вот почему не подошел вариант держать их в таблице country в колонках name_en, name_ru
А чем обычный hasMany и BelongsTo не подходит?
источник

VV

Valeriu Vodnicear in Laravel Pro
Arman
зачем нужна модель новая? обычная промежуточная таблица
можете раскрыть мысль подробнее?
источник

VV

Valeriu Vodnicear in Laravel Pro
Igor Melnychuk
А чем обычный hasMany и BelongsTo не подходит?
подходит, но вопрос в том на сколько правильно так делать
источник

IM

Igor Melnychuk in Laravel Pro
Valeriu Vodnicear
подходит, но вопрос в том на сколько правильно так делать
Всё ок
источник

IM

Igor Melnychuk in Laravel Pro
Ты описываешь в модели Country две связи
источник

IM

Igor Melnychuk in Laravel Pro
Первая связь - это translations (hasMany), она возвращает все переводы на всех языках сразу
источник