Я использую объекты данных eraquent в laravel для доступа к моим данным, как лучше назвать мои таблицы, столбцы, внешние / первичные ключи и т. Д.?
Я обнаружил, что существует множество соглашений об именах. Мне просто интересно, какой из них лучше всего подходит для красноречивых моделей Laravel.
Я думаю о следующем соглашении об именах:
Таким образом, с этим я мог бы использовать аналогичный синтаксис в контроллере.
$result = Post::where('postCategoryId', '4')->get();
Есть ли рекомендуемые рекомендации Laravel для этого? Могу ли я продолжить эти соглашения об именах?
Если у кого-то есть лучшие предложения, я буду очень рад их услышать. Большое спасибо!
Laravel имеет свое собственное соглашение об именах. Например, если название вашей модели User.php
затем Laravel ожидает, что класс ‘User’ будет внутри этого файла. Это также ожидает users
стол для User
модель. Тем не менее, вы можете переопределить это соглашение, определив свойство таблицы в вашей модели, например,
class User extends Eloquent implements UserInterface, RemindableInterface {
protected $table = 'user';
}
Из официальной документации Laravel:
Обратите внимание, что мы не указали Eloquent, какую таблицу использовать для нашей модели User.
В качестве имени таблицы будет использовано имя класса во множественном числе в нижнем регистре.
если другое имя не указано явно. Так что, в этом случае, Eloquent
будет предполагать, что модель пользователя хранит записи в таблице пользователей. Вы можете указать
пользовательская таблица путем определения$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).
Имена таблиц должны быть во множественном числе, т. Е. Таблица ‘users’ для модели User.
И имена столбцов должны быть не в случае верблюда, а в случае змеи. Смотри уже ответили Соглашение об имени поля базы данных / модели в Laravel?
Это слишком обычно, вы можете видеть, что это похоже на RedBeanORM: чехол змеи для столбцов, даже если вы попробуете другой. Также рекомендуется избегать повторения имен таблиц с именами столбцов из-за метода, который вы можете вызвать из объекта Model для доступа к их отношениям.
Соглашения об именах таблиц по умолчанию могут легко вызвать конфликты при установке нескольких пакетов, которые могут случайно иметь одинаковые имена классов. Решением было бы назвать таблицы как: [vendor]. [Package]. [Class], что соответствует применению пространства имен в Laravel.
отредактированный: Использование точек в именах таблиц не рекомендуется. Будет ли альтернативное соглашение для использования, чтобы разработчики модульных приложений не беспокоились о существующих именах таблиц.