Laravel 9 Laravel关联多态关系书签



我有这个Bookmark型号的

public function bookmarkable()
{
return $this->morphTo();
}
public function user()
{
return $this->belongsTo(User::class);
}

在我的User型号中

public function bookmarks()
{
return $this->hasMany(Bookmark::class);
}
public function posts()
{
return $this->hasMany(Post::class);
}

Post

public function bookmarks()
{
return $this->morphMany(Bookmark::class, 'bookmarkable');
}
public function user()
{
return $this->belongsTo(User::class);
}

我想创建一个新的$bookmark,并将$post与书签关联

书签表具有列bookmarkable_typebookmarkable_iduser_id

原因morphTo扩展belongsTo

你可以像这样使用

$post = Post::first()// the post u want add to bookmark
$newBookmark = new Bookmark([]);
$newBookmark->name="lorem ipsum";
$newBookmark->bookmarkable()->associate($post);
$newBookmark->user()->associate($post->user);
$newBookmark->save();

请参阅类文档:https://laravel.com/api/9.x/Illuminate/Database/Eloquent/Relations/MorphTo.html

最新更新