добавление нескольких областей во вложенную нетерпеливую загрузку - PullRequest
0 голосов
/ 02 ноября 2018

В моем приложении пользователи могут прогнозировать результаты предстоящих футбольных игр.

В основном я хочу отобразить все прогнозы пользователей на эту неделю. Я делаю это, добавляя область действия к моей модели совпадений, которая загружает совпадения только с этой недели.

Проблема: я все еще получаю все мои прогнозы от этого пользователя (не только прогнозы на текущей неделе) Для прогнозов, которые мой пользователь создал на этой неделе, загружается правильное соответствие. Для других прогнозов совпадений нет, но они все равно добавляются в мой запрос.

Как добавить еще одну область к моей вложенной нетерпеливой загрузке, которая будет выбирать только прогнозы, сделанные на этой неделе, или совпадение, которое не является нулевым? (или другое решение)

Код:

public function showPredictions() {
    $user = auth()->user()->load(['predictions.match' => function ($query) { $query->thisWeek();}]);
    dd($user); 
    return view('predictions', compact('user'));
}

Матч модель

public function Predictions() {
    return $this->hasMany('App\Prediction', 'match_id', 'match_id');
}

public function scopeThisWeek($query) {
    $start_date = now()->previous(Carbon::TUESDAY);
    $end_date = now()->next(Carbon::MONDAY);
    return $query->whereDate('date','>', $start_date)->whereDate('date','<', $end_date);
}

выход

  #relations: array:1 [▼
    "predictions" => Collection {#265 ▼
      #items: array:29 [▼
        0 => Prediction {#268 ▶}
        1 => Prediction {#269 ▶}
        2 => Prediction {#270 ▶}
        3 => Prediction {#271 ▶}
        4 => Prediction {#272 ▶}
        5 => Prediction {#273 ▶}
        6 => Prediction {#274 ▶}
        7 => Prediction {#275 ▶}
        8 => Prediction {#276 ▶}
        9 => Prediction {#277 ▶}
        10 => Prediction {#278 ▶}
        11 => Prediction {#279 ▶}
        12 => etc... 
      ]

Вывод, который я хочу достичь (у меня есть 10 прогнозов для каждого пользователя на этой неделе)

 #relations: array:1 [▼
    "predictions" => Collection {#265 ▼
      #items: array:10 [▼
        0 => Prediction {#268 ▶}
        1 => Prediction {#269 ▶}
        2 => Prediction {#270 ▶}
        3 => Prediction {#271 ▶}
        4 => Prediction {#272 ▶}
        5 => Prediction {#273 ▶}
        6 => Prediction {#274 ▶}
        7 => Prediction {#275 ▶}
        8 => Prediction {#276 ▶}
        9 => Prediction {#277 ▶}
        10 => Prediction {#278 ▶}
      ]

В моем массиве прогнозов есть поле отношения с правильным соответствием.

1 Ответ

0 голосов
/ 02 ноября 2018

Использование whereHas():

$user = auth()->user()->load([
    'predictions' => function ($query) {
        $query->whereHas('match', function ($query) {
            $query->thisWeek();
        });
    },
    'predictions.match'
]);
...