文章和群组自动链接

问题描述 投票:0回答:1

我的文章可以包含不同的标签。例如,5 块:(php、html、css、laravel、js) 我有也可以包含不同标签的组。例如 4 块:(laravel, php, html, css)

我已经定义了关系并且它有效。我还欠缺的是articel和群的链接。

如何显示组中标签匹配的所有帖子?

有人有想法或可以帮助我吗?

发布模型

  public function groups()
  {
    return $this->belongsToMany('App\Group');
  }

    public function tags()
    {
        return $this->morphToMany('App\Tag', 'taggable');
    }

标签模型

public function articles()
{
    return $this->morphedByMany('App\Article', 'taggable');
}

public function groups()
{
    return $this->morphedByMany('App\Group', 'taggable');
}

团体模型

public function tags()
{
    return $this->morphToMany('App\Tag', 'taggable');
}

public function articles()
{
    return $this->belongsToMany('App\Article');
}
php laravel view tags grouping
1个回答
0
投票

自从您的问题更新以来,我发现人际关系中存在错误

article_group 表名称更改为 taggables。因为 laravel 正在根据其他表名执行某些任务。如果您仍然想使用article_group,那么您必须明确告诉laravel有关表名的信息。 阅读 HasRelationships.php (下面给出了完整路径)特征,然后你就会了解 laravel 如何自动链接它们。

/your_project/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php

是的 您的要求的解决方案是多对多多态关系

在这里阅读https://laravel.com/docs/5.6/eloquent-relationships#many-to-many-polymorphic-relations.

您将创建如下所示的 4 个表,然后在模型中创建关系

articles
id - integer
name - string

groups
id - integer
name - string

tags
id - integer
name - string

taggables
tag_id - integer
taggable_id - integer
taggable_type - string

关系会是这样的:

class Article extends Model
{

   public function tags()
   {
      return $this->morphToMany('App\Tag', 'taggable');
   }
}

逆关系将是这样的:

class Tag extends Model
{

   public function articles()
   {
       return $this->morphedByMany('App\Article', 'taggable');
   }
   public function groups()
   {
       return $this->morphedByMany('App\Group', 'taggable');
   }
}

现在你可以获得这样的文章标签:

$article = App\Article::find(1);

foreach ($article->tags as $tag) {
    //
}

将文章附加到群组如下:

$article = App\Article::find(1);
$group = App\Group::find(1);
$article->groups()->sync($group->id);

Read this for more https://laravel.com/docs/5.6/eloquent-relationships#updating-many-to-many-relationships

希望这能解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.