Laravel 从关系中获取数据 Table

Laravel Get Data From Relation Table

我正在使用 Laravel 7.28 构建一个项目。我有三个 table 的名字;项目、标签和 project_tags。在 project_tags table 中有 project_ids 和 tag_ids。它看起来像这样:

我需要获取所有带有标签的项目,其次我需要获取带有特定标签的项目。那么我应该在模型中做什么?我应该使用哪个功能以及如何使用?我如何获取数据?

我发现了 rtconner/laravel-tagging 包,但这是正确的方法吗?感谢您的帮助

您可能想要在项目和标签之间创建 many to many 关系。

class Project extends Model
{
    public function tags()
    {
        return $this->belongsToMany(Tag::class, 'project_tags')->withTimestamps();
    }
}

然后:

// Get all projects with their tags.
Project::with('tags')->get();

// Get projects contain certain a certain tag.
Project::whereHas('tags', function ($query) {
    return $query->where('tag', 'some value');
})

此外,标签往往是一种polymorphic many to many关系。所以如果你想长期手动处理标签,我建议这样设计。

此外,结帐 spatie/laravel-tags 包裹。