Связь таблицы с моделью Laravel 8
Разбираюсь с фреймворком Laravel. Такой вопрос: Создал модель "Category" через артизан и создал таблицу "Categories" через миграцию. Добавил пару строк, вывел - все работает. Вопрос, каким образом Laravel знает что к модели привязанна именно это таблица, если я не указывал в ручную свойство "table" в классе модели? Где в файлах фреймворка указана эта связь? Спасибо
Ответы (2 шт):
все же документировано
By convention, the "snake case", plural name of the class will be used as the table name unless another name is explicitly specified. So, in this case, Eloquent will assume the
Flightmodel stores records in theflightstable, while anAirTrafficControllermodel would store records in anair_traffic_controllerstable.
в общем-то так примерно все фреймворки поступают нынче
относительно кода - по иерархии наследования в Model перейдите:
/**
* Get the table associated with the model.
*
* @return string
*/
public function getTable()
{
return $this->table ?? Str::snake(Str::pluralStudly(class_basename($this)));
}
Существует соглашение о именовании, в котором рекомендуется называть модели единственном числе (например, Post, Category) А таблицы в бд исходя из функции getTable()
Вы всегда можете указать любую другую или таблицу через свойство
protected $table = 'table_name'; в модели