Php 使用子数组生成的Laravel查询没有说服力
请帮我完成我在学校的项目。我如何在laravel控制器中查询类似这种情况。 我有三张桌子: Shipping_表和Shipping_产品以及tbl_产品,现在我的表结构如下: 装运表: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
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
}