Laravel Название модели в Mysql-таблице и полиморфная связь

StalkerClasses

Новичок
По умолчанию если вы создадите полиморфную связь в Laravel то в таблице в поле принадлежность будет записано название родительской модели. Возможно ли как-то ларавель настроить так, что бы записывать не название модели, а название таблицы?
1.png



Вот это из офф. докуменатции:
posts
id - integer
name - string

users
id - integer
name - string

images
id - integer
url - string
imageable_id - integer
imageable_type - string (сюда пишется название модели, а хотелось бы название таблицы!)

Вот еще пример

SELECT * FROM `comments` WHERE comment_id = {$news->id} AND comment_type = 'App\News (но вместо этого tbl_news)';

Нашел здесь каккой-то http://laravel.at.jeffsbox.eu/laravel-5-eloquent-relationship-types-polymorphic-relations
Relation::morphMap([ ]) но не пойму как его применить в последних версиях фреймворка.
 
Последнее редактирование:

AmdY

Пью пиво
Команда форума
Опять костылишь всякий бред. Зачем тебе это?
На одну таблицу можно повесить несколько моделей в зависимости от контекстов. Так что прописывать название таблицы - это идиотизм.
 

StalkerClasses

Новичок
Опять костылишь всякий бред. Зачем тебе это?
На одну таблицу можно повесить несколько моделей в зависимости от контекстов. Так что прописывать название таблицы - это идиотизм.
Да можно и это прекрасно работает и меня все устраивает. Но у меня есть две таблицы которые идут от CMS (таблица страниц, и таблица содержимого), а они к сожалению записывают не в виде модели, а в виде таблицы. И мне по этой причине нужно поменять.
 

AmdY

Пью пиво
Команда форума
Блин, подожди, ты же можешь сам указывать имя в методе $this->morph*('имя таблицы, а не модели')
Разве не работает из коробки?
 

StalkerClasses

Новичок
Блин, подожди, ты же можешь сам указывать имя в методе $this->morph*('имя таблицы, а не модели')
Разве не работает из коробки?
Из коробки нет. По крайней мере я не вижу что бы можно было указать имя таблицы. Нужно указывать именно модель.
 

StalkerClasses

Новичок
Мне очень даже подошла morphMap
\Illuminate\Database\Eloquent\Relations\Relation::morphMap([
# 'posts' => 'App\Post',
# 'videos' => 'App\Video',
 

fixxxer

К.О.
Партнер клуба
У тебя ужасная проблема с формулированием вопросов.

То, что тебе нужно, это не имя таблицы, а замена имени класса модели на алиас. Для этого как раз и есть morphMap, и в такой формулировке ты бы сразу нашел ответ.

К имени таблицы это не имеет никакого отношения (ну в твоем случае совпадает, и что?).
 

StalkerClasses

Новичок
У тебя ужасная проблема с формулированием вопросов.

То, что тебе нужно, это не имя таблицы, а замена имени класса модели на алиас. Для этого как раз и есть morphMap, и в такой формулировке ты бы сразу нашел ответ.

К имени таблицы это не имеет никакого отношения (ну в твоем случае совпадает, и что?).
Да оно так и бывает. Ведь всегда на истории проше объяснить... Как на рынках - всему на истории можно найти причину...
 
Сверху