gpt4 book ai didi

php - 在 laravel 中查找与标签关联的所有帖子

转载 作者:行者123 更新时间:2023-11-29 05:55:54 25 4
gpt4 key购买 nike

我正在使用 laravel 构建一个博客,其中一篇文章有​​很多标签。我想按标签过滤所有帖子。意味着如果我点击“PHP”标签,我想获得所有相关的帖子。

这是我的代码

我有两个表,第一个是标签,第二个表是帖子链接

标签表

 public function up()
{
Schema::create('tags', function (Blueprint $table) {
$table->increments('id');
$table->string('tags');
$table->timestamps();
});
}

关系标签表

public function up()
{
Schema::create('article_tag', function (Blueprint $table) {
$table->increments('id');
$table->integer('article_id')->unsigned();
$table->foreign('article_id')->references('id')->on('articles');
$table->integer('tag_id')->unsigned();
$table->foreign('tag_id')->references('id')->on('tags');
});
}

文章模型

class Article extends Model
{
public function tags()
{
return $this->belongsToMany('App\Tag');
}
}

标签模型

class Tag extends Model
{
public function articles()
{
return $this->belongsToMany('App\Article');
}
}

标签 Controller

 public function show($id,$name)
{
//here I received tag id and name.

$list->with('articles')->get();
return view('articles.tagshow')->withList($list);

}

最佳答案

Eloquent 提供了 whereHas 方法,可让您过滤相关模型的属性。为了按相关标签的名称过滤文章,您应该执行以下操作:

$articles = Article::whereHas('tags', function($query) use ($tagName) {
$query->whereName($tagName);
})->get();

然而,在你的情况下它应该更简单,因为你已经在你的 Controller 中有了标签 ID,所以你可以简单地通过 ID 获取标签模型,然后返回相关文章:

public function show($id,$name) {
return Tag::findOrFail($id)->articles;
}

查看有关查询关系的文档以获取更多详细信息:https://laravel.com/docs/5.6/eloquent-relationships#querying-relations

关于php - 在 laravel 中查找与标签关联的所有帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49462916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com