Проблема в построении отношений запроса в Laravel - PullRequest
0 голосов
/ 09 марта 2019

Предположим, у нас есть 3 таблицы: User, Report и Job.В таблице пользователей у нас есть 2 столбца для использования, id и job_id, в таблице report у нас есть user_id и job_id '.

Итак, мне нужны все пользователи с подробным отчетом, чьи таблицы job_id и user_id соответствуют таблице пользователей.Я хочу сделать это с помощью отношений.

Я сделал этот запрос.

Проблема заключается в том, как написать несколько выражений where с отчетом, (where user_id,job_id).

User:: select(*)->with("report")->paginate(10);

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Возможно, вы можете сделать это следующим образом:

User::whereHas('report', function ($q) use ($id, $sample) {
    $q->where('id', $id)
      ->where('sample', $sample);
})->get();

$id - это просто пример переменной, которую вы можете передать закрытию, в то время как whereHas может проверить, существует ли существующее отношение

иличто-то вроде

User::WhereHas('report', function ($q) use ($id, $sample) {
    $q
        ->where('id', $id) // this part here your using where on reports table
        ->where('sample', $sample);
})
->where('id', $user_id); // the part here your using where on users table
->get();
0 голосов
/ 09 марта 2019

Попробуйте это

Модель пользователя определяет

public function job()
{
    return $this->belongsTo(Job::class);
}

Модель задания определить

public function reports()
{
    return $this->hasMany(Report::class);
}

Тогда используйте

User::select(*)->with("job.reports")->paginate(10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...