亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 雄辯:表的兩個所有者之間的關系

Laravel 雄辯:表的兩個所有者之間的關系

PHP
牛魔王的故事 2022-01-08 14:44:55
我有三張表學生、課程和成績。并且grade有兩個外鍵:student_id和course_id,它屬于兩個表。class Grade extends Model{    public function student()    {        return $this->belongsTo('App\Student');    }    public function course()    {        return $this->belongsTo('App\Course');    }}此外,學生和課程有很多成績:class Student extends Model{    public function grades()    {        return $this->hasMany('App\Grade');    }}和class Course extends Model{    public function grades()    {        return $this->hasMany('App\Grade');    }}現在,我想在學生和課程之間建立關系,例如,對于 student1,我想檢索所有有成績的課程。像這樣的東西,但它不正確:$student1->grades->course我可以簡單地寫@foreach($student1->grades as $grade)      $grade->course@endforeach但我不想要它,我想($courses as $course)在我的 foreach 循環中。
查看完整描述

2 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

我建議您需要參考https://laravel.com/docs/5.8/eloquent-relationships#has-many-through鏈接來實現這一點,


在學生模式中添加hasManyThrough關系。


public function courses()

    {

        return $this->hasManyThrough(

            'App\Course',

            'App\Grade',

            'course_id', // Foreign key on Grade table...

            'id', // Foreign key on Course table...

            'id', // Local key on Student table...

            'student_id' // Local key on Grade table...

        );

    }

我沒有測試過這段代碼,但是,這就是方式


查看完整回答
反對 回復 2022-01-08
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

讓成績表成為學生和課程之間多對多關系的數據透視表怎么樣?


class Student

{

    // an alternative name could be gradedCourses.

    public function courses()

    {

        return $this->belongsToMany(Course::class, 'grades');

    }

}

因此,您可以直接從這種關系中訪問課程。


@foreach($student->courses course)

      $course->name

@endforeach


查看完整回答
反對 回復 2022-01-08
  • 2 回答
  • 0 關注
  • 158 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號