У меня есть сообщения модели, связанная с Разделом модели, которые зависят от дополнительного условия для работы:Laravel belongsTo с условием и ревностными нагрузками
<?php
class Post extends Base
{
public function section()
{
return $this->belongsTo('App\Models\Section', 'id_cat')->where('website', $this->website);
}
}
Когда я хочу, чтобы извлечь сообщение и получить это связанно раздел, я могу это сделать, как:
$post = Post::first();
echo $post->section->name; // Output the section's name
Однако при попытке получить раздел с помощью нетерпеливых нагрузок:
Post::with(['section'])->chunk(1000, function ($posts) {
echo $post->section->name;
});
Laravel бросить следующее исключение:
PHP error: Trying to get property of non-object
Когда я делаю отладку объекта Post возвращенного выше нетерпеливого запрос нагрузки, я замечаю, что section
отношений null
. Обратите внимание, что он работает нормально, если я удаляю условие из ассоциации belongsTo
.
У вас есть идеи, почему это происходит?
Прежде всего, вы не пишете 'где' в определении своих отношений. Это просто отображение отношения. 'where' используется, когда вы запрашиваете это отношение –