Может кто-нибудь, пожалуйста, помогите мне понять, почему работает следующий код
$x = $widget->objGallery->galleryItems()->with(array('captions' => function($query){ $query->where('locale', 'IT' );}))->get() ;
но когда я использую динамическое значение
$id='11';
$x = $widget->objGallery->galleryItems()->with(array('captions' => function($query){ $query->where('locale', $id );}))->get() ;
говорит
Метод Illuminate \ View \ View :: __ toString () не должен вызывать исключение
На самом деле это трудно сказать, потому что вы не показали здесь соответствующий код, но проблема с кодом:
$x = $widget->objGallery->galleryItems()->with(array('captions' =>
function($query){ $query->where('locale', $id );
}))->get();
эта переменная $id
здесь не определено Вам нужно добавить use
использовать, если в замыкании, поэтому код должен выглядеть следующим образом:
$x = $widget->objGallery->galleryItems()->with(array('captions' =>
function($query) use($id) { $query->where('locale', $id );
}))->get();
Вы должны изменить свою среду на локальную и включить отладку, возможно, вы бы знали об этой проблеме. Вероятно, при исправлении этого кода, как я показал, у вас не будет ошибки.
Вы не можете, если вы хотите запросить отношения, вам нужно использовать whereHas.
Это, для концепции активной загрузки, просто уточнить … С исправлением синтаксиса в ответе @Marcin Nabiałek, где функция «with» работает только с данными о быстрой загрузке, а не с основным запросом.