我正在使用Laravel 5.1,我已经在我的模型中适当地定义了关系。当我这样做时:


 $ warehouses = Auth :: user() - >仓库
 - > where('activity_id',$ request- > activity_id)
 - > where('company_id',$ request-> company_id);



 我得到结果在我的本地服务器中,但在测试服务器中是一个空集合。我了解到如果我这样做:


 $ company_id =(int)$ request-> company_id;
 $ activity_id =(int)$ request-> activity_id;
 $ warehouses = Auth :: user() - >仓库
 - > where('activity_id',$ activity_id)
 - > where('company_id' ,$ company_id);



 我在本地服务器上获得了一个空集合,但我在测试服务器中得到了结果。
是这个配置的东西?我不记得改变与此有关的任何事情。它与MySQL有关吗?测试数据库是本地数据库的转储,id字段是整数,自动递增和无符号。
我很感激任何帮助

答案 0 :(得分:1)
为了防止其他人发生这种情况,我解决了自己的问题。我所做的是改变查询的方式并使用过滤器,如下所示:
$warehouses = Auth::user()->warehouses->
filter(function ($item) use($request)
{
return ($item->activity_id == $request->rdActivity
AND
$item->company_id == $request->company_id);
});
这对Laravel编码风格来说似乎更自然和真实,最重要的是:它可以工作