Поиск сводной таблицы Eloquent - PullRequest
0 голосов
/ 17 мая 2019

У меня есть 3 таблицы

students
- id
- name

classes
- id
- name

student_class
- id
- student_id
- class_id
- score 

Я хочу вернуть список студентов, которые относятся к class_id = 100

$students = \Student::where(['class_id' => 100])->get();

это мой студентКласс

use Illuminate\Database\Eloquent\Model;
class Student extends Model
{

    protected $table = 'students';

    public function store(Request $request)
    {
        $student = new Student;
        $student->save();
    }  
}

Я получаю ошибку:

<strong>Message:</strong> SQLSTATE[42S22]: Column not found: 1054 Unknown column 'class_id' in 'where clause' (SQL: select * from `students` where (`class_id` = 100))

Обновление: Я могу сделать

$students = \Class::find(100)->with(['students'])->get();

, и это будетверните всех учеников, как детей классов, но мне это не нужно.Мне нужны данные от студентов и сводная таблица (student_class), в частности столбец de Score.

спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Обновите модель вашего студента как

public function classes(){
    return $this->belongsToMany(Class::class, 'student_class', 'student_id', 'class_id');
}

// query

Student::whereHas('classes', function ($query) {
    $query->where('id', 100);
})->get();
0 голосов
/ 17 мая 2019

ОБНОВЛЕНИЕ: в обеих модельных отношениях добавьте

return $this->belongsToMany('App\Class')->withPivot('score');

, теперь вы можете сделать это внутри цикла

foreach ($student->classes as $class) {
    echo $class->pivot->score;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...