Что мне найти родственные модели, использующие eloquent в Laravel? - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть два раунда и задания. Соответствующие модели - Assignment и Round. Назначение имеет отношение к раунду:

public function round()
    {
        return $this->belongsTo(Round::class, 'round_id');
    }

назначение имеет ссылочный ключ как round_id. Я хочу, чтобы все назначения имели round_id.

$assignments = Assignment::find(1)->round()->where('start_date', '<=', $now)
 ->where('end_date', '>=', $now)
 ->where('round_type', '=', 'judge')
 ->get();

Ответы [ 2 ]

1 голос
/ 03 ноября 2019

Вы должны попробовать whereHas

$assignments = Assignment::whereHas('round', function($query) use ($round_id, $start_date, $end_date, $round_type){
    $now = Carbon::now();

    $query->where('id', $round_id);
    $query->where('start_date', '<=', $now);
    $query->where('end_date', '>=', $now);
    $query->where('round_type', $round_type);
})->get();

Это даст вам все назначения раунда round_id и в диапазоне дат $start_date и $end_date

0 голосов
/ 03 ноября 2019

Вы можете добавить предложение where к фильтру assignments с помощью round_id.

$round_id = 1;

$assignments = Assignment::where('round_id', $round_id)->get();

Вы можете объединить несколько предложений where.

$assignments = Assignment
                   ::where('round_id', $round_id)
                   ->where('round_type', '=', 'judge')
                   ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...