在 laravel 中使用查询生成器加入 3 table

Join 3 table with query builder in laravel

我有 3 个 table 问题,注册,ssi_tracks 我需要通过对应于其他两个 tables[=13 从注册 table 中获取详细信息=]

我需要根据以下信息从注册中获取详细信息 questions.question_schedul=0 ,ssi_tracks.track_first_status

我已经写了查询,但它说找不到该列是我的查询

 $register = DB::table('registrations')
            ->join('questions', 'registrations.registration_id', '=', 'questions.question_id')
             ->join('ssi_tracks','registrations.registration_id','=','ssi_tracks.registration_id')
             ->select('address', 'model', 'chassis', 'delivery_date','ssi_tracks.track_first_status')
            ->where([["questions.question_schedul", "=", $dropselected] and ['ssi_tracks.track_first_status',0]])
             ->get();

试试这个查询:

$register = DB::table('registrations')
             ->leftJoin('questions', 'registrations.registration_id', '=', 'questions.question_id')
             ->leftJoin('ssi_tracks','registrations.registration_id','=','ssi_tracks.registration_id')
             ->select('registrations.address', 'registrations.model', 'registrations.chassis', 'registrations.delivery_date','ssi_tracks.track_first_status')
             ->where(['questions.question_schedul'=>$dropselected,'ssi_tracks.track_first_status'=>0])
             ->get();

试试这个:

$register = DB::table('registrations as R')
             ->select('R.address', 'R.model', 'R.chassis', 'R.delivery_date','S.track_first_status')
             ->join('questions as Q', 'R.registration_id', '=', 'Q.question_id')
             ->join('ssi_tracks as S','R.registration_id','=','S.registration_id')
             ->where('Q.question_schedul', '=', $dropselected)
             ->where('S.track_first_status', '=', 0)
             ->get();

确保您使用问题 table 中的正确列来匹配注册 ID:

->join('questions as Q', 'R.registration_id', '=', 'Q.question_id')