Php 拉雷维尔5号–;按多对多相关模型查询项目

Php 拉雷维尔5号–;按多对多相关模型查询项目,php,laravel,laravel-5.3,Php,Laravel,Laravel 5.3,我有以下多对多关系: 与会者-与会者标签-标签 现在,我想根据一些标记值筛选与会者,因此我创建了这个解决方案,效果很好: $attendees = Attendee::whereHas('tags', function ($q) { $q->where([ ['attendee_tag.tag_id', '=', '6'], ['attendee_tag.value_string', '=', 'Summer ticket'] })->with

我有以下多对多关系:

与会者-与会者标签-标签

现在,我想根据一些标记值筛选与会者,因此我创建了这个解决方案,效果很好:

$attendees = Attendee::whereHas('tags', function ($q) {
    $q->where([
        ['attendee_tag.tag_id', '=', '6'],
        ['attendee_tag.value_string', '=', 'Summer ticket']
})->with(['tags' => function($q) {
        $q->select('tags.id', 'value_type', 'attendee_tag.value_string', 'attendee_tag.value_int');
}])->paginate($pagination);
但我不知道,如何根据多个标签筛选与会者。。。我试过这个,但不起作用:

$attendees = Attendee::whereHas('tags', function ($q) {
    $q->where([
        ['attendee_tag.tag_id', '=', '6'],
        ['attendee_tag.value_string', '=', 'Summer ticket']
    ])->where([
        ['attendee_tag.tag_id', '=', '13'],
        ['attendee_tag.value_string', '=', 5]
    ]);
})->with(['tags' => function($q) {
    $q->select('tags.id', 'value_type', 'attendee_tag.value_string', 'attendee_tag.value_int');
}])->paginate($pagination);

任何帮助都将不胜感激!:)

可能需要分隔以下位置:

$attendees = Attendee::whereHas('tags', function ($q0) {
    $q0->where([
        ['attendee_tag.tag_id', '=', '6'],
        ['attendee_tag.value_string', '=', 'Summer ticket']
    ]);
})->whereHas('tags', function ($q1) {
    $q1->where([
        ['attendee_tag.tag_id', '=', '13'],
        ['attendee_tag.value_string', '=', 5]
    ]);
})->with(['tags' => function($q) {
    $q->select('tags.id', 'value_type', 'attendee_tag.value_string', 'attendee_tag.value_int');
}])->paginate($pagination);

可能是通过分离whereHas:

$attendees = Attendee::whereHas('tags', function ($q0) {
    $q0->where([
        ['attendee_tag.tag_id', '=', '6'],
        ['attendee_tag.value_string', '=', 'Summer ticket']
    ]);
})->whereHas('tags', function ($q1) {
    $q1->where([
        ['attendee_tag.tag_id', '=', '13'],
        ['attendee_tag.value_string', '=', 5]
    ]);
})->with(['tags' => function($q) {
    $q->select('tags.id', 'value_type', 'attendee_tag.value_string', 'attendee_tag.value_int');
}])->paginate($pagination);

您可以使用
where
函数Hm,但如何使用?你能给我举个例子吗?你可以使用
其中的
函数Hm,但是如何使用呢?你能给我举个例子吗?我不想。。。我想要和。。。你的“雄辩的多对多关系”评论是什么意思?在Laravel模型中,你可以声明多对多关系:我现在了解了OR和,我认为除了你编写的请求之外,你还必须使用一些原始SQL。我在whereHas中使用了“标记”,所以(当然)必须声明:)我把它弄出来了(我删除了我的问题)我改变了我的解决方案,你试过使用两个wherehads吗?我不想要或…我想要和…你的“雄辩的多对多关系”是什么意思评论?在Laravel模型中,您可以声明多对多关系:我现在了解了OR和and,我认为除了您编写的请求之外,您还必须使用一些原始SQL。我使用的是whereHas中的“tags”,因此(当然)必须声明:)我将其取消(我删除了我的问题)我更改了解决方案,你试过用两个where吗?