gpt4 book ai didi

php - Laravel 模型数据的交集

转载 作者:可可西里 更新时间:2023-11-01 01:15:11 26 4
gpt4 key购买 nike

我在每个文件中都有相应功能的文章和标签模型:

文章.php:

public function tags()
{
return $this->belongsToMany('App\Tag')->withTimestamps();
}

标签.php:

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

在 Blade View 中,我可以通过调用

来访问具有相应标签的文章
@foreach($tag->articles as $article)
...
@endforeach

从上面,我可以访问单个标签的多篇文章。我们如何过滤具有多个标签的文章,比如在 Tag 模型中仅包含 tag1tag2 的文章?

最佳答案

这是 native way做你想做的事:

$tags = ['tag1', 'tag2'];
$articles = Article::whereHas('tags', function ($query) use ($tags) {
$query->whereIn('tag', $tags);
})->get();

如果你愿意,你可以使用动态查询范围来让它稍微更具可读性:

// Article.php

public function scopeTagged($query, $tags)
{
$query->whereHas('tags', function ($q) use ($tags) {
$q->whereIn('tag', (array)$tags);
});
}

这样你就可以在查询文章时这样做:

Article::tagged('tag1')->get();
Article::tagged(['tag1', 'tag2'])->get();

关于php - Laravel 模型数据的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40901200/

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