Каково правило для создания полиморфного имени поля в Laravel?

Я не новичок в использовании Laravel, но я впервые / хочу использовать полиморфные отношения.
Я видел пример на Laravel.com, и он говорит, что я должен использовать ‘Imageable_id’ к столу под названием ‘изображений’, в другом примере я видел ‘Commentable_id’ к столу ‘Комментарии’.

Есть ли правило для создания имен?

Например: я хочу создать таблицу «Категория» что будет использоваться для «» сообщений а также «Настройки». В этом случае я должен использовать ‘Categoryable_id’ как имя?

2

Решение

Нет никаких правил, кроме соглашения по умолчанию. По умолчанию вы определяете префикс, а 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

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]