Laravel查询。左联接不返回左表中未连接的行

时间:2020-04-01 05:14:17

标签: sql eloquent laravel-6

我有一个带有成绩单表的数据库,该数据库具有他们所参加的每个课程的学生成绩,并且我还有一个课程表,其中包含一个学生完成学位所需的所有课程。

我需要做的是显示课程表中的所有 Course_Codes ,并显示学生在课程中完成该课程后所获得的成绩。我正在尝试使用左联接,这样我可以获取所有的Course_Codes,但是在尝试过的任何事情上都没有运气。

以下是课程表和成绩单表的模型:

protected $table ="curriculum";
protected $fillable = [
  'Program_ID',
  'Curriculum_ID',
  'Maj_Code',
  'Course_Code',
  'Course_Seq',
  'Prereq_ID',
  'Course_Desc',
];
protected $table ="transcript";
protected $fillable = [
  'Transcript_ID',
  'CWID',
  'Maj_Code',
  'Curriculum_ID',
  'Course_Comp',
  'Term_Completed',
  'Course_Grade',
  'Course_Code',
];

这是课程控制器中的查询:

public function getProgress($id){
return DB::table('curriculum')
->select('curriculum.Course_Code','transcript.Course_Comp', 'transcript.Term_Completed', 'transcript.Course_Grade')
->leftJoin('transcript', 'curriculum.Course_Code', '=','transcript.Course_Code')
->where('CWID', $id)
->get();

这是输出:

[
{
    "Course_Code": "CIS299",
    "Course_Comp": "A",
    "Term_Completed": null,
    "Course_Grade": null
},
{
    "Course_Code": "CIS352",
    "Course_Comp": "A",
    "Term_Completed": null,
    "Course_Grade": null
},
{
    "Course_Code": "CIS110",
    "Course_Comp": "Y",
    "Term_Completed": "Fall18",
    "Course_Grade": "A"
},
{
    "Course_Code": "CIS120",
    "Course_Comp": "Y",
    "Term_Completed": "Fall18",
    "Course_Grade": "C-"
},
{
    "Course_Code": "CIS341",
    "Course_Comp": "Y",
    "Term_Completed": "Fall19",
    "Course_Grade": "A-"
}

课程表中有13个课程代码,仅返回5。

现在已经为此苦苦挣扎了一段时间。任何帮助将不胜感激。

0 个答案:

没有答案