首页 > 解决方案 > SQL查询类似集合的概念(补或除外)

问题描述

我需要你的帮助。我只想显示不在表格文档中但在今天日期的所有用户(来自表格用户)的名称

我试过但我失败了这是我的代码

public function activeUser(){

    $documents = DB::table('users')
        ->leftJoin('documents', 'users.id', '=', 'documents.user_id')
        ->select('users.fname','users.mname','users.sname','documents.created_at')
        ->where('documents.user_id',null)
        ->where('documents.created_at',null)
        ->get();    

    return view('activity.activity')->with('documents', $documents);
}

我不知道在 where 子句中添加当前日期。上面的代码给了我在表格文档中记录的所有用户,但是如果用户曾经存在于文档中,将始终被认为是在该文档表中。

标签: laravel

解决方案


您可以使用“whereBetween”(https://laravel.com/docs/6.x/queries#where-clauses)。

public function activeUser(){

    $yesterday = Carbon::yesterday();
    $today = Carbon::today();
    $documents = DB::table('users')
        ->leftJoin('documents', 'users.id', '=', 'documents.user_id')
        ->select('users.fname','users.mname','users.sname','documents.created_at')
        ->where('documents.user_id',null)
        ->whereBetween('documents.created_at', [$yesterday, $today])
        ->get();    

    return view('activity.activity')->with('documents', $documents);
}

请记住,如果更符合您的业务逻辑案例,您也可以使用“whereNotInBetween”。


推荐阅读