繁体   English   中英

PHP嵌套的for-each循环

[英]PHP Nested for-each loop

$QRYS1 = QUERY;
$QRYS2 = QUERY;
$QRYS3 = QUERY;
$QRYS4 = QUERY;

foreach($QRYS1 as $QRY1)
{
 foreach($QRYS2 as $QRY2)
 {
   if(bla)
   {
   foreach($QRYS3 as $QRY3)
   {
     foreach($QRYS4 as $QRY4)
     {

     }
   }
  }
 }
}

上面的代码样式使数据处理非常缓慢。 无论如何,我可以使处理速度更快吗?

我正在使用多个表及其所有ARRAY()进行联接和计数的数据。

使用for-each循环获取表会降低您的页面速度。 您可以尝试联接表并获取所需的那些字段。

<?php

$TotalCountofDepartmentforSelectedComp_id = Userlog::where('userlogs.company_id', '=', $comp_id)
    ->where_Between('userlogs.created_at', $startDate, $endDate)
    ->group_by('userlogs.department_id')
    ->get(['userlogs.department_id', DB::raw('count(userlogs.user_id) as totaldepartmentcount')]);

$ProductListforSelectedComp_id = Product::join('userlogs', 'userlogs.product_id', '=', 'products.id')
    ->where('userlogs.company_id', '=', $comp_id)
    ->distinct()
    ->get(['products.id', 'products.name']);


$TotalCountCompanyProductWiseinforSelectedComp_id = Product::join('userlogs', 'userlogs.product_id', '=', 'products.id')
    ->where('userlogs.company_id', '=', $comp_id)
    ->where_Between('userlogs.created_at', $startDate, $endDate)
    ->group_by('products.id')
    ->get(['products.id', DB::raw('count(userlogs.user_id) as totalcompanyproductcountuserwise')]);

$DepartmentListsforSelectedComp_id = Department::where('company_id', '=', $comp_id)->get(
    ['departments.id', 'departments.name']
);


$TotalCountCompanyDepartmentProductWiseinforSelectedComp_id = DB::query(
    'SELECT T1.id, T2.department_id,
            COALESCE(T2.totaldepartmentproductcountuserwise, 0) AS totaldepartmentproductcountuserwise
       FROM (
         SELECT DISTINCT products.id FROM products
           INNER JOIN userlogs ON userlogs.product_id = products.id
           WHERE company_id = ?
         ) AS T1
       LEFT JOIN (
         SELECT department_id, product_id, COUNT(*) AS totaldepartmentproductcountuserwise
           FROM userlogs
           WHERE company_id = ?
             AND created_at BETWEEN ? AND ?
           GROUP BY department_id, product_id
         ) AS T2 ON T2.product_id = T1.id',
    array($comp_id, $comp_id, $startDate, $endDate)); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM