Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用子数组生成的Laravel查询没有说服力_Php_Mysql_Relational Database_Laravel 5.5_Entity Relationship Model - Fatal编程技术网

Php 使用子数组生成的Laravel查询没有说服力

Php 使用子数组生成的Laravel查询没有说服力,php,mysql,relational-database,laravel-5.5,entity-relationship-model,Php,Mysql,Relational Database,Laravel 5.5,Entity Relationship Model,请帮我完成我在学校的项目。我如何在laravel控制器中查询类似这种情况。 我有三张桌子: Shipping_表和Shipping_产品以及tbl_产品,现在我的表结构如下: 装运表: Ship_ID (INT AUTO INC) AMOUNT (DOUBLE,2) NAME (VARCHAR) SHIP_DATE (DATE) RECEIVER (VARCHAR) 运输产品: ID (INT AUTO INC) Ship_id (foreign key from shipping table

请帮我完成我在学校的项目。我如何在laravel控制器中查询类似这种情况。 我有三张桌子: Shipping_表和Shipping_产品以及tbl_产品,现在我的表结构如下:

装运表:

Ship_ID (INT AUTO INC)
AMOUNT (DOUBLE,2)
NAME (VARCHAR)
SHIP_DATE (DATE)
RECEIVER (VARCHAR)
运输产品:

ID (INT AUTO INC)
Ship_id (foreign key from shipping table)
Product_id
产品列表:

Product_id (Auto Inc)
name(varchar)
Qty(int)
Description (varchar)
现在我想要的是这样一个查询结果: 我想获取shipping表中的所有内容,并在子数组中获取shipping_products中列出的产品以及所需的shipping id

结果如下:示例I有2个表值

Array(2) {
 [0] Array(4) {
  ['Ship_id'] "1"
  ['Amount'] "10000"
  ['Ship_date'] "1995-12-11"
  ['Ship_products'] Array(3)
      ['id'] "1" Array(2)
           ['product_id'] "5"
           ['name'] "Product 1"
      ['id'] "2" Array(2)
           ['product_id'] "6"
           ['name'] "Product 2"
      ['id'] "3" Array(2)
           ['product_id'] "10"
           ['name'] "Product 15"

 }
 [1] Array(4) {
   ['Ship_id'] "2"
   ['Amount'] "15000"
   ['Ship_date'] "1995-12-15"
   ['Ship_products'] Array(2)
      ['id'] "1" Array(2)
           ['product_id'] "5"
           ['name'] "Product 1"
      ['id'] "2" Array(2)
           ['product_id'] "6"
           ['name'] "Product 2"
 }
}

SQL部分很容易使用连接

php部分更为复杂,因为您必须在循环中获取结果,并检测Ship_id和Product_id中的更改,并将其放入结果数组中

因为这是家庭作业。。我将把它作为练习

这是一个快速算法示例-未经测试,但逻辑合理


MySQL查询结果是平面表。你想要一个查询和php代码将其移动到一个特殊的数组中吗?先生,你能给我一个链接作为php代码的示例吗?。。我不知道该怎么做。你能连接并执行并将结果集输入php吗?如果是这样,我可以给你算法。连接和获取结果超出了mehello先生的范围。我喜欢这样做,$shippings=DB::table'shipping_table'->选择'*'->leftJoin'shipping_products',函数$join{$join->on'shipping_products.shipping_id','=','shipping_table.shipping_id';}->leftJoin'products',函数$join{$join->on'products.product\u id'、'='、'shipping\u products.product\u id'}->get;查询后我该怎么办?正如我所说,将结果放入Laravel的数组对我来说是不适用的。一旦您了解到这一点,您可以使用上面的代码示例
SELECT * 
FROM Shipping S
LEFT JOIN Shipping_Products SP
  ON SP.Ship_Id=S.Ship_Id
LEFT JOIN Products P
  ON P.Product_id=SP.Product_id
$cur_ship = '';
$cur_prod = '';
$results  = array();
foreach ($resultset as $key => $row) {
   if ($cur_ship != $row['Ship_id']) {
      $cur_ship = $row['Ship_id'];
      $cur_prod = '';
      $results[$cur_ship] = array();
      // Fill ship info from $row
   }
   if ($cur_prod != $row['Product_id']) {
      $cur_prod = $row['Product_id'];
      $results[$cur_ship][$cur_prod] = array();
      // Fill Product info from $row
   }
   // FILL OUR $results[$cur_ship][$cur_prod] from $row
}