Php 具有动态约束的拉维尔急负荷
有人能帮我理解为什么下面的代码是有效的吗Php 具有动态约束的拉维尔急负荷,php,laravel,closures,anonymous-function,eager-loading,Php,Laravel,Closures,Anonymous Function,Eager Loading,有人能帮我理解为什么下面的代码是有效的吗 $x = $widget->objGallery->galleryItems()->with(array('captions' => function($query){ $query->where('locale', 'IT' );}))->get() ; 但是当我使用动态值时 $id='11'; $x = $widget->objGallery->galleryItems()->with(arra
$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() ;
他说
方法Illumb\View\View::\ toString不能引发异常
事实上,很难说,因为这里没有显示相关代码,但代码的问题是:
$x = $widget->objGallery->galleryItems()->with(array('captions' =>
function($query){ $query->where('locale', $id );
}))->get();
变量$id在此未定义。您需要在闭包中添加use to use if,因此代码应如下所示:
$x = $widget->objGallery->galleryItems()->with(array('captions' =>
function($query) use($id) { $query->where('locale', $id );
}))->get();
您应该将您的环境更改为本地,并已启用调试,这样您可能就会知道这个问题。可能在更正我显示的代码时,您不会出现错误。事实上很难说,因为您没有在此处显示相关代码,但代码的问题是:
$x = $widget->objGallery->galleryItems()->with(array('captions' =>
function($query){ $query->where('locale', $id );
}))->get();
变量$id在此未定义。您需要在闭包中添加use to use if,因此代码应如下所示:
$x = $widget->objGallery->galleryItems()->with(array('captions' =>
function($query) use($id) { $query->where('locale', $id );
}))->get();
您应该将您的环境更改为本地,并已启用调试,这样您可能就会知道这个问题。可能在更正我显示的代码时,您不会出现错误。如果您想通过关系进行查询,您需要使用whereHas
这是,对于渴望加载的概念,只需澄清。。。通过对@Marcin Nabiałek的响应进行语法修复,With函数中的where仅对急切加载数据起作用,而不是在主查询中起作用。如果要通过关系进行查询,则需要使用WHERHADS 这是,对于渴望加载的概念,只需澄清。。。通过对@Marcin Nabiałek的响应进行语法修复,With函数中的where只对急切加载的数据起作用,而不在主查询中起作用