我有两个表-第一个表称为“用户”,第二个表称为“ buy_courses”。
我正在尝试选择所有不在user_names中的用户。我尝试过-
$users = DB::table('users')
->rightjoin('buy_courses', 'users.user_name', '=', 'buy_courses.user_name')
->get();
Run Code Online (Sandbox Code Playgroud)
当我使用“ <>”时,它将返回其用户名在“ buy_courses”中的所有用户,然后我将获得所有用户。什么是正确的查询?
DB::table("users")->select('*')->whereNotIn('user_name',function($query) {
$query->select('user_name')->from('buy_courses');
})->get();
Run Code Online (Sandbox Code Playgroud)
刚刚加盟实际上是在内部加入Laravel所以实际上也许你也可以试试:
DB::table('users')
->join('buy_courses', 'users.user_name', '=', 'buy_courses.user_name')
->get();
Run Code Online (Sandbox Code Playgroud)
使用 Eloquent 试试:
$courseUserNames = BuyCourses::pluck('user_name')->all();
$users = User::whereNotIn('user_name', $courseUserNames)->select(...)->get();
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢使用数据库查询:
$courseUserNames = DB::table('buy_courses')->pluck('user_name')->all();
$users = DB::table('users')->whereNotIn('user_name', $courseUserNames)->select(...)->get();
Run Code Online (Sandbox Code Playgroud)