使用多個鍵做模型關聯

fybbbb發表於2019-11-19

文件

example

public function course()
{
    return $this->belongsTo(Course::class, ['user_id', 'teacher_id', 'tpye_id',], ['user_id', 'teacher_id', 'tpye_id',])
        ->select([
            'id',
            'user_id',
            'teacher_id',
            'tpye_id',
        ]);
}

sql

select * from `course`
where (
    (
      `course`.`user_id` = 1
      and `course`.`teacher_id` = 5
      and `course`.`type_id` = 1
    )
    or (
      `course`.`user_id` = 2
      and `course`.`teacher_id` = 6
      and `course`.`type_id` = 3
    )
  )

原始碼分析

如果foreignKeys是空,預設使用指定表的主鍵。
如果foreignKeys是陣列,迴圈並且使用DB::raw組合成一個新的where條件

如果localKey是空,預設使用指定表的主鍵。

注意

使用多列with的兩個Model都要use Compoships;

相關文章