doubi4617 2017-03-22 11:16
浏览 83
已采纳

如何在Laravel中保存多态关系?

I'm reading the tutorial* on how to define many-to-many polymorphic relationships in Laravel but it doesn't show how to save records with this relationship.

In the their example they have

class Post extends Model
{
    /**
     * Get all of the tags for the post.
     */
    public function tags()
    {
        return $this->morphToMany('App\Tag', 'taggable');
    }
}

and

class Tag extends Model
{
    /**
     * Get all of the posts that are assigned this tag.
     */
    public function posts()
    {
        return $this->morphedByMany('App\Post', 'taggable');
    }

    /**
     * Get all of the videos that are assigned this tag.
     */
    public function videos()
    {
        return $this->morphedByMany('App\Video', 'taggable');
    }
}

I've tried saving in different ways but the attempts that makes most sense to me is:

$tag = Tag::find(1);
$video = Video::find(1);
$tag->videos()->associate($video);

or

$tag->videos()->sync($video);

None of these are working. Can anyone give me a clue on what I could try?

  • 写回答

1条回答 默认 最新

  • douchi0028 2017-03-22 11:22
    关注

    It's simple like that, see this section.

    Instead of manually setting the attribute on the videos, you may insert the Comment directly from the relationship's save method:

    //Create a new Tag instance (fill the array with your own database fields)
    $tag = new Tag(['name' => 'Foo bar.']);
    
    //Find the video to insert into a tag
    $video = Video::find(1);
    
    //In the tag relationship, save a new video
    $tag->videos()->save($video);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?