@codemania

Архитектура ORM. Передача имени таблицы?

Вопрос не по какой-то конкретной ORM а в целом об архитектуре.
Есть варианты где надо передавать имя таблицы непосредственно в запросе, например:
$countries = $query->orderBy('code')
->where(['country.code' => '123'])
->count();

country.code - таблица country поле code тут всё понятно

Есть более магические варианты типа:
$customer = new Customer();
$customer->name = 'James';
$customer->email = 'james@example.com';
$customer->save();

И куда он этого клиента сохранил хз. Скорее всего в таблицу Customer и её имя = имени класса.

Но бывает:
class Customer extends ORM{
  protected $dbtable = 'my_clients'; // реальное имя таблицы БД задано на уровне класса
...
}

Или имена таблиц в методах класса могут объявить. При запросах уровень абстракции повышается, но новым разработчикам сложнее разобраться в системе и понять откуда что берётся и куда заносится.
  • Вопрос задан
  • 209 просмотров
Решения вопроса 1
neuotq
@neuotq
Прокрастинация
Обычно модель называется с единичном числе, а таблица во множественном с маленькой буквы.
Те во втором случае у модели Customer, таблица customers. Так например сделано в eloquent в Laravel. Если это не устраивает то в нормальных ORM всегда можно указать имя таблицы в ручную, примерно как ты показал в третьем случае.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы