Php 拉威尔雄辩的效率

Php 拉威尔雄辩的效率,php,mysql,laravel-4,Php,Mysql,Laravel 4,我有一个Laravel4应用程序,其中有三个表:一个客户表、一个带有客户id列的订单表和一个带有订单id列的订单输出表 我的问题是,下面的代码是否足够有效,以满足我的要求,即查找登录用户是否已订购特定的输出id。将高度赞赏最佳做法 public function getEdit($id) { $order = ShopOrder::find($id); $client = ShopClient::find($order->client_id);

我有一个Laravel4应用程序,其中有三个表:一个客户表、一个带有客户id列的订单表和一个带有订单id列的订单输出表

我的问题是,下面的代码是否足够有效,以满足我的要求,即查找登录用户是否已订购特定的输出id。将高度赞赏最佳做法

   public function getEdit($id) {

      $order = ShopOrder::find($id);

      $client = ShopClient::find($order->client_id);
      $clientorders = ShopOrder::where('client_id', $client->id)->get();

      $orderlist =array();
      foreach ($clientorders as $co)
      {
          $orderlist[] =($co->id);
      }

      $orderoutputs = ShopOrderoutput::whereIn('order_id',$orderlist)->where('output_id', '22')->get();
      $orderoutputslist = array();
      foreach ($orderoutputs as $list)
      {
         $orderoutputslist[] = $list->output_id;
      }


     if (in_array(22, $orderoutputslist))
     {
        echo 'finally';
     } 
}

谢谢。

如果您只想知道用户是否有具有特定输出id的订单,我会将查询合并为一个联合查询

我假设order_outputs表通过外键order_id与order_outputs表相关

我还假设您正在尝试查找客户机/用户是否有过订单号为22的订单

我不熟悉laravel中db查询的语法

在纯SQL中,这将是一个错误

SELECT id FROM orders 
    INNER JOIN order_output ON order.id = order_output.order_id
    INNER JOIN clients on order.client_id = client.id
  WHERE client.id = $client_id
    AND order_output.output_id = 22;
然后数一数结果集,看看是否至少有一个

这样,您的数据库引擎将为您完成工作,而不是php代码必须循环遍历结果集