Как определить много-много полиморфных отношений с дополнительными полями?Laravel - Много для многих полиморфных отношений с дополнительными полями
У меня есть три (или более, так как это полиморфное отношение) таблиц.
tags table: id, name
tagged table: id, tag_id, taggable_id, taggable_type, user_id
posts table: id, record, timestamps
users table: id, name, email
user_id
на меченых таблицы referes в таблице пользователей на колонке с идентификатором. В моей Post модели у меня есть:
public function tags()
{
return $this->morphToMany('App\Tag', 'taggable','tagged');
}
и в моей модели Tag у меня есть:
public function posts()
{
return $this->morphedByMany('App\Post', 'taggable','tagged');
}
Тогда, когда я попробовать это в мой контроллер:
$tag = new \App\Tag(
array(
'tag'=>"someTag"
));
$tag->save()
$post = \App\Post::find($id);
$post->tags()->save($tag);
я Целостность Ограничение Нарушение при отсутствии пользователя_ид:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (
hb
.tagged
, CONSTRAINTtagged_user_id_foreign
FOREIGN KEY (user_id
) REFERENCESusers
(id
)) (SQL: insert intotagged
(tag_id
,taggable_id
,taggable_type
) values (26, 2, App\Resource)). Which is somewhat expected, as I have never had the chance to define or declare the user_id field.
Кроме того, я попытался withPivot() по отношению теги следующим образом, но безрезультатно:
public function tags()
{
return $this->morphToMany('App\Tag', 'taggable','tagged')->withPivot('user_id');
}
Вы пробовали? –
Пробовал с помощью Pivot()? Проблема в том, как я могу назначить атрибут. Я попытался withPivot ('user_id'), и я все еще получаю ошибку ограничения целостности, когда передаю массив, который также содержит user_id для метода create. Он не помещает user_id в свой запрос. – CrackingTheCode
'create' почти не имеет отношения к' withPivot'. Поэтому вместо вопроса, который вы опубликовали (прочтите это http://xyproblem.info/), покажите, что вы пытаетесь сделать, что вы ожидаете и что получите вместо этого. –