Я не новичок в использовании Laravel, но я впервые / хочу использовать полиморфные отношения.
Я видел пример на Laravel.com, и он говорит, что я должен использовать ‘Imageable_id’ к столу под названием ‘изображений’, в другом примере я видел ‘Commentable_id’ к столу ‘Комментарии’.
Есть ли правило для создания имен?
Например: я хочу создать таблицу «Категория» что будет использоваться для «» сообщений а также «Настройки». В этом случае я должен использовать ‘Categoryable_id’ как имя?
Нет никаких правил, кроме соглашения по умолчанию. По умолчанию вы определяете префикс, а Laravel устанавливает суффиксы _id и _type. Поле определяется тем, что вы определяете в отношении:
Например, в сообщениях или настройках:
public function category()
{
return $this->morphMany('App\Category', 'categoryable');
}
При этом ваша модель будет искать в таблице Category для categoryable_id и categoryable_type. categoryable_id по умолчанию будет соответствовать идентификатору вашей модели, а categoryable_type будет соответствовать FQCN вашей модели (например, «App \ Post»).
Если вы хотите изменить то, как Laravel устанавливает имена полиморфных столбцов, вы можете установить их с 3-м и 4-м параметрами одного и того же метода, например:
public function category()
{
return $this->morphMany('App\Category', 'categoryable', 'model_type', 'model_id');
}
Так что на самом деле нет правила. Вы можете определить его по своему усмотрению или использовать соглашение по умолчанию.
Источник: http://laravel.com/docs/5.1/eloquent-relationships#many-to-many-polymorphic-relations
Других решений пока нет …