在Laravel中,如何从2个表中获取数据,而这两个表中不存在数据

k2arahey  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(194)

表1

|识别号|值1|

|1个|项目a|

|第二章|b.人口基金|

|三个|(c)秘书长的报告|

表2

|识别号|值1|

|1个|项目a|

|第二章|b.人口基金|

我需要获取表1的数据,但它不在表2中

$users_without_info = DB::table('users')->rightJoin('user_infos', 'users.email', '=', 'user_infos.email')
->select('users.*')
->latest()
->get();

我试过这个命令,不起作用。

xzv2uavs

xzv2uavs1#

使用内部联接

$users_without_info = DB::table('users')
        ->join('user_infos', 'users.email', '!=', 'user_infos.email')
        ->select('users.*')
        ->latest()
        ->get();

如果您有模型,则使用具有外键的关系,然后在用户模型中添加关系

public function userInfo(){

   return $this->hasOne(UserInfo::class);
}

并且查询将是

$users_without_info=\App\Models\User::doesntHave('userInfo')->get();

如果您没有外键,且希望使用email作为唯一标识符,则

public function userInfo(){

 return $this->hasOne(UserInfo::class,'email','email');
}
xwmevbvl

xwmevbvl2#

这是解决方案,

  • 问题出在联接语句中。
  • 您可以尝试这种方法来获取表-1(* users )上的数据,该数据不在表-2( user_infos *)上。
$users_without_info = DB::table('users')
  ->leftJoin('user_infos', 'users.email', '=', 'user_infos.email')
  ->whereNull('user_infos.email')
  ->get();
  • 希望你能修好它 *

相关问题