laravel hasManyThrough用法及引數

不適合做銷售發表於2021-11-11

第一種情況,我稱之為傳導關聯表(簡單模式)
國家有很多使用者,使用者有很多帖子

countries
    id - integer
    name - string

users
    id - integer
    country_id - integer
    name - string

posts
    id - integer
    user_id - integer
    title - string

查詢某個國家的所有帖子,怎麼實現?
countries為本表,posts為要輸出的目標表,users為中間表

return $this->hasManyThrough('App\Post', 'App\User', 'country_id', 'user_id');

第二種情況,有中間表情況(純中間表)

exam_paper(試卷表)
id
name

exam_paper_question(試卷與試題中間表)
id
exam_paper_id
question_id

exam_question(試題表)
id
name

我們要通過exam_paper的id查詢question

return $this->hasManyThrough('exam_question', 'exam_paper_question', 'exam_paper_id', 'id''id''question_id');
// 引數1 目標表類名
exam_question,
// 引數2 樞紐表類名
exam_paper_question,
// 引數3 樞紐表中和當前表關聯的欄位名
'exam_paper_question.exam_paper_id',
// 引數4 目標表和樞紐表關聯的欄位名
'exam_question.id',
// 引數5 當前表中和樞紐表關聯的欄位名
'exam_paper.id',
// 引數6 樞紐表和目標表關聯的欄位名
'exam_paper_question.question_id');

如果把當前表記作A,目標表記作B,中間表記作C,6個引數記作(B,C,CA,BC,AC,CB)

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章