Переменная Dynami c игнорируется в предложении where () - PullRequest
0 голосов
/ 04 марта 2020

Я почесал голову за последние 2 часа.

У меня есть фрагмент кода, который получает записи в течение последних 24 часов.

Затем, как только они у меня есть Я oop их и oop подколлекция и задаю свойство с именем 'answer' для соответствующих записей ответов.

Посмотрите код, а затем я объясню проблему:

$last24HrWalkarounds = Walkaround::where('driver_id', $request->user()->id)
    ->where('company_id', $company->id)
    ->where('started_at', '>', $formattedDate)
    ->orderBy('id', 'DESC')
    ->with(
        [
            'questionnaire' => function ($q) {
                $q->with(
                    [
                        'questions'
                    ]
                );
            }
        ]
    )
    ->get();
foreach ($last24HrWalkarounds as $walkaround) {
    foreach ($walkaround->questionnaire->questions as $question) {
        Log::info('Setting answer where QID: '.$question->id.' // WID: '.$walkaround->id);
        $question->answer = Answer::where('question_id', $question->id)->where('walkaround_id', $walkaround->id)->with('defects')->first();
    }
}

Проблема в том, что все свойства 'answer' в вопросах имеют одинаковый walkaround_id.

В журнале :: info отображается правильный идентификатор обхода, поэтому $ walkaround-> id правильный.

Это делает еще более странным, если я жестко закодирую идентификатор другого обхода к тому, который всегда возвращается, они все настроены на ответ на этот вопрос для этого жестко закодированного идентификатора обхода.

Почему мое предложение where снова и снова видит один и тот же идентификатор, хотя Log :: info говорит иначе?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...