Laravel – Соглашения о присвоении имен в базе данных, таблицах и столбцах?

Я использую красноречивые объекты данных laravel для доступа к моим данным, что лучший способ назвать мои таблицы, столбцы, внешние / первичные ключи и т. Д.?

Я обнаружил, что существует множество соглашений об именах. Мне просто интересно, какой из лучших подходит для ларавельных красноречивых моделей.

Я думаю о следующем соглашении об именах:

  1. Названия уникальных таблиц (например: Post)
  2. Сингулярные имена столбцов (например: userId – идентификатор пользователя в таблице сообщений)
  3. Корпус верблюда для нескольких слов в именах таблиц (например, PostComment, PostReview, PostPhoto)
  4. Корпус верблюда для нескольких слов в именах столбцов (например: firstName, postCategoryId, postPhotoId)

Поэтому с этим я мог бы использовать аналогичный синтаксис в контроллере.

$result = Post::where('postCategoryId', '4')->get(); 

Есть ли рекомендуемые рекомендации Laravel для этого? Могу ли я продолжить эти соглашения об именах?

Если у кого-то есть лучшие предложения, я буду очень рад их услышать. Спасибо большое!

У Laravel есть собственное соглашение об именах. Например, если ваше имя модели User.php то Laravel ожидает, что класс «Пользователь» будет находиться внутри этого файла. Он также ожидает таблицу users для модели User . Однако вы можете переопределить это соглашение, указав свойство таблицы на своей модели, например,

  class User extends Eloquent implements UserInterface, RemindableInterface { protected $table = 'user'; } 

Официальная документация от Laravel:

Обратите внимание, что мы не сказали Eloquent, какую таблицу использовать для нашей модели User. Имя в нижнем регистре, множественное имя класса будет использоваться в качестве имени таблицы, если явно не указано другое имя. Таким образом, в этом случае Eloquent будет считать, что модель User хранит записи в таблице users. Вы можете указать пользовательскую таблицу, указав свойство $table на своей модели

Если вы будете использовать идентификатор таблицы пользователя в другой таблице в качестве внешнего ключа, тогда он должен быть змеиным, например user_id чтобы его можно было использовать автоматически в случае связи. Опять же, вы можете переопределить это соглашение, указав дополнительные аргументы в функции отношений. Например,

  class User extends Eloquent implements UserInterface, RemindableInterface { public function post(){ return $this->hasMany('Post', 'userId', 'id'); } } class Post extends Eloquent{ public function user(){ return $this->belongsTo('User', 'userId', 'id'); } } 

Документы для красноречивых отношений Laravel

Для других столбцов в таблице вы можете назвать их по своему усмотрению.

Я предлагаю вам пройти документацию один раз.

Я не согласен в целом с этими примерами, которые вы оба показали прямо здесь.

Это чисто, если взглянуть на официальную документацию Laravel, особенно на сеансе отношений Eloquent ( http://laravel.com/docs/4.2/eloquent#relationships ).

Названия таблиц должны быть во множественном числе, то есть «таблица пользователей» для модели пользователя.

И имена колонок не обязательно должны быть в Camel Case, но в Snake Case. См. Ответ уже ответили: соглашение о названии поля базы данных / модели в Laravel?

Это слишком обычное явление, вы можете видеть, что это похоже на RedBeanORM: «Змея» для столбцов, даже если вы попробуете другой. Рекомендуется избегать повторения имен таблиц с помощью столбцов из-за метода, который вы можете вызвать из объекта Model для доступа к их отношениям.

Соглашения об именах таблиц по умолчанию могут легко вызвать конфликты с установкой нескольких пакетов, которые могут иметь, кстати, те же имена классов. Решение было бы назвать таблицы как: [vendor]. [Package]. [Class], что соответствует тому, как применяется пространство имен в Laravel.

Отредактировано : использование точек в именах таблиц не рекомендуется. Будет ли альтернативное соглашение использовать, чтобы разработчикам модульного встроенного приложения не нужно было беспокоиться о существующих именах таблиц.