Я почесал голову за последние 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 говорит иначе?
Спасибо