Laravel eloquent get all records wherehas all ids in many to many relation(Laravel eloquent 获取所有记录,其中包含多对多关系中的所有 id)
问题描述
我有一个 Posts 表,它有三个字段 id、title、description.
I have a Posts table it has three fields id, title, description.
我的发布模型
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');
}
}
现在我想获得帖子&在我有标签过滤器的地方分页,例如我有两个标签 animals &news id 1 &2.现在我想获取所有带有标签 1 & 的帖子2 &分页.这是我试过的
Now I want to get posts & paginate where I have a tag filter e.g I have two tags animals & news which has id 1 & 2. Now I want to get all posts which has tag 1 & 2 & paginate. Here is what I tried
Post:: with('tags')->whereHas('tags', function($q) {
$q->whereIn('id', [1, 2]);
})->paginate();
但在这里,我是 whereIn,它返回的帖子有标签 1 或 2 或 both.但我想要同时具有标签 ID 1 和标签的帖子2.
But here as I am whereIn it returns posts has tags 1 or 2 or both. But I want post who has both tag id 1 & 2.
我使用的是 Laravel 5.2.
推荐答案
我一直在寻找相同的东西并受到 this stackoverflow MySQL answer,我已经结束了这个
I have been looking for the same thing and inspired by this stackoverflow MySQL answer, I have ended up with this
代码:
Post:: with('tags')->whereHas('tags', function($q) {
$idList = [1,2];
$q->whereIn('id', $idList)
->havingRaw('COUNT(id) = ?', [count($idList)])
})->paginate();
因为我想我可能会在一些地方使用它,所以我已经把它变成了一个特性,你可以在这里查看.如果您在 Post 类中包含 trait,您可以像下面这样使用.
Because I think I might use it in a few places I have made it into a trait which you can view here. Which if you included the trait in your Post class you could use like the following.
代码:
Post::with('tags')->whereHasRelationIds('tags', [1,2])->paginate();
这篇关于Laravel eloquent 获取所有记录,其中包含多对多关系中的所有 id的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Laravel eloquent 获取所有记录,其中包含多对多关系中的所有 id
- PHP - if 语句中的倒序 2021-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
