首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用多个where子句在单个雄辩的Laravel中连接2个表

使用多个where子句在单个雄辩的Laravel中连接2个表
EN

Stack Overflow用户
提问于 2022-06-14 03:44:17
回答 2查看 64关注 0票数 1

在这里,我想找到简化查询的解决方案,以便使用Laravel中的雄辩语言获取数据。

代码语言:javascript
运行
复制
$room_id = Booking::whereBetween('from', [$request->from, $request->to])
                     ->orWhereBetween('to', [$request->from, $request->to])
                     ->where('from', '<=', $request->from, )
                     ->where('to', '>=', $request->from)
                     ->pluck('room_id');
                     
$rooms = Room::whereNotIn('id', $room_id )->get();

因此,在这里,我有两个雄辩的操作,以获得房间,但不包括在预定表中有特定的要求。到目前为止,我没有问题,但你们能给我最好的实践,以简化我的工作吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-14 04:12:55

确保“预订”关系写在您的房间模型上。

代码语言:javascript
运行
复制
$rooms = Room::whereDoesntHave('bookings', use($request) function($q){ 
    $q->whereBetween('from', [$request->from, $request->to])
    $q->orWhereBetween('to', [$request->from, $request->to])
    $q->where('from', '<=', $request->from, )
    $q->where('to', '>=', $request->from)
})->get();
票数 1
EN

Stack Overflow用户

发布于 2022-06-14 04:21:42

您可以引用laravel关系将其添加到模型中,然后使用https://laravel.com/docs/9.x/eloquent-relationships查询连接表:

示例:

  • 和options

保护$with = 'product_savour‘;

  • Relationship

公共函数product_savour() {返回$this->hasMany(ProductSavour::class,'product_id');}

  • Query

$productQuery->whereHas(‘产品_品味’,函数($query)使用($filters) {$query-> use (‘品味’,函数($query)使用($filters) {$query-> use (类型),函数($query)使用($filters) {$query->其中(‘id’,$filters‘savour’;}););});

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72611283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档