L5.1:在查询在一个服务器而不是另一个服务器中工作之前,将参数转换为INT

时间:2016-02-11 13:05:42

标签: php mysql laravel laravel-5.1

我正在使用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字段是整数,自动递增和无符号。
我很感激任何帮助




1 个答案:

答案 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编码风格来说似乎更自然和真实,最重要的是:它可以工作