任何人都可以帮助我理解以下代码的工作原理
$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()不得抛出异常
答案 0 :(得分:9)
事实上很难说因为你没有在这里展示相关代码,但代码存在问题:
$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();
您应该将您的环境更改为本地并打开调试,可能您会知道此问题。可能正如我所展示的那样纠正这段代码时你不会有错误。
答案 1 :(得分:0)
你不能,如果你想通过关系查询,你需要使用whereHas。
对于急切加载的概念,这只是澄清...在@MarcinNabiałek的响应中使用语法修复,“with”函数中的哪个位置仅适用于急切加载数据,而不适用于主查询。 / p>