gpt4 book ai didi

php - Laravel Eloquent 地获取所有记录,其中包含多对多关系中的所有 ID

转载 作者:可可西里 更新时间:2023-11-01 00:41:12 24 4
gpt4 key购买 nike

我有一个 Posts 表,它包含三个字段 idtitledescription

我的帖子模型

class Post extends Model
{
use SoftDeletes;

protected $fillable = ['title', 'description'];

public function tags()
{
return $this->belongsToMany(Tag::class, 'post_tag');
}
}

我的标签模型

class Tag extends Model
{
use SoftDeletes;

protected $fillable = ['name'];

public function posts()
{
return $this->belongsToMany(Post::class, 'post_tag');
}
}

现在我想在我有标签过滤器的地方获取帖子和分页,例如我有两个标签 animalsnews,它们的 ID 1 & 2。现在我想获取所有具有标签 1 & 2 & paginate 的帖子。这是我试过的

        Post:: with('tags')->whereHas('tags', function($q) {
$q->whereIn('id', [1, 2]);
})->paginate();

但是当我在 whereIn 时,它返回的帖子有标签 12both。但我想要同时具有标签 ID 1 和 2 的帖子。

我正在使用 Laravel 5.2

最佳答案

我一直在寻找同样的东西并受到 this stackoverflow MySQL answer 的启发, 我已经结束了这个

代码:

Post:: with('tags')->whereHas('tags', function($q) {
$idList = [1,2];
$q->whereIn('id', $idList)
->havingRaw('COUNT(id) = ?', [count($idList)])
})->paginate();

因为我认为我可能会在一些地方使用它,所以我将它变成了一个特性,你可以 view here .如果您将特征包含在您的 Post 类中,您可以像下面这样使用。

代码:

Post::with('tags')->whereHasRelationIds('tags', [1,2])->paginate();

关于php - Laravel Eloquent 地获取所有记录,其中包含多对多关系中的所有 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36593847/

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