代码之家  ›  专栏  ›  技术社区  ›  user9461267

使用laravel中的查询生成器连接3个表

  •  0
  • user9461267  · 技术社区  · 7 年前

    我有一个3表问题、注册、ssi\U曲目,我需要通过对应其他两个表从注册表中获取详细信息

    我需要从注册中获得详细信息 问题。question\u schedul=0,ssi\u曲目。track\u first\u状态

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

     $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();
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Jinandra Gupta    7 年前

    尝试以下操作:

    $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();
    

    确保您使用了问题表中的右列来匹配注册id:

    ->join('questions as Q', 'R.registration_id', '=', 'Q.question_id')
    
        2
  •  0
  •   Saurabh Mistry    7 年前

    尝试此查询:

    $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();