Как справиться со следующим запросом, используя Eloquent в Laravel - PullRequest
0 голосов
/ 25 февраля 2019

Я работаю над Системой управления школой в Laravel 5.7.У меня есть две таблицы.

  1. студенты
  2. месячные_файлы

Я хочу выбрать месяцев со значением 1 , присоединившись к таблице month_fees с студентов и предоставив условие для студентов таблицы.Чтобы сделать это просто.Я хочу сделать следующий запрос красноречивым образом.

SELECT * FROM `students` 
INNER JOIN `monthly_fees` ON `monthly_fees`.`student_id` = `students`.`id` 
WHERE `students`.`class` = 'whatever'

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

Красноречивым способом было бы сделать что-то вроде следующего:

Student::with('monthly_fees')->where('class', 'whatever')->get();

, который вернет всем студентам, принадлежащим к этому классу, их ежемесячную плату.Очевидно, вам необходимо убедиться, что вы настроили правильные отношения на своих Student и MonthlyFee моделях.

0 голосов
/ 25 февраля 2019

Зачем вообще присоединяться.С Laravel вы можете просто загружать и фильтровать результаты по таблице отношений ( Красноречивый способ ):

Students::whereHas('MonthlyFees', function ($query) {
     $query->where('months', 1);
})->get();

Делая это, вы only получитерезультаты Стьюдента, где столбец месяцев равен 1. Затем просто отфильтруйте результаты в режиме блэйда, как обычно.Надеюсь, это поможет!

0 голосов
/ 25 февраля 2019

Можете ли вы попробовать следующий запрос:

DB::select(`students.*`, `monthly_fees.*`)
    ->from(`students`)
    ->join(`monthly_fees`, function($join) {
        $join->on(`monthly_fees.student_id`, `=`, `students.id`);
    })
    ->where(`students.class`, `=`, 'whatever')
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...