【发布时间】:2021-03-12 17:13:10
【问题描述】:
我遇到了问题。 我的数据库相当复杂。
对于问题,使用了下表:
- product - 包含产品详细信息。例如鞋
- productattribute - 包含产品的不同变体。例如黑色,尺寸 12。产品密钥在此表中
- productsupplier - 包含特定产品属性的特定供应商。例如,黑色鞋,12 号可以由多个供应商提供。所以productattribute key在product supplier中。
- PO - 采购订单。 PO 是特定于供应商的。产品供应商密钥就在其中。
希望数据库关系清晰。
所以我正在制作采购订单表格。 在步骤 1 中,用户将选择供应商。如图所示
当他们单击下一步时,将显示与该供应商相关的所有产品。如图所示
接下来我要做的是,当他们单击任何名称时,会显示 productattribute 表的数据。它带有其他属性,如颜色、大小等。这里将使用 jquery,我不是 jquery 用户,所以我遇到了麻烦。
在 PHP 后端,我将产品名称分组到一个数组中。我这样做是因为在我显示上图的下拉列表中,我希望每个产品的名称只显示一次,而不是像属性一样多。所以我对产品进行了分组。以下是数组和分组的代码:
public function new_po_next(Request $request)
{
$product = array();
$supplier = \App\supplier::where('user_id', $request->supplier)->first();
$productsupplier = \App\productsupplier::where('supplier_id', $supplier->id)->get();
foreach ($productsupplier as $ps)
{
$productattribute = \App\productattribute::where('id', $ps->productattribute_id)->first();
$prod = \App\product::where('id', $productattribute->product_id)->first();
$product [] = [
'prod_supp_id' => $ps->id,
'prod_supp_prodattid' => $ps->productattribute_id,
'prod_supp_cost' => $ps->cost,
'prod_att_id' => $productattribute->id,
'prod_att_color' => $productattribute->color_id,
'prod_att_size' => $productattribute->size_id,
'prod_att_material' => $productattribute->material_id,
'prod_att_prodid' => $productattribute->product_id,
'prod_id'=>$prod->id,
'prod_name' =>$prod->name,
];
}
$productCollection = collect($product);
$groupedProductCollection = $productCollection->groupBy('prod_name');
$groupedProduct = $groupedProductCollection->all(); // all method will convert it back to array
// var_dump($groupedProduct);die();
$status = $request->status;
$deldate = $request->deldate;
$discount = $request->discount;
return view("vendor.new-po-next")->with('status', $status)
->with('deldate', $deldate)->with('discount', $discount)->with('product', $product)->with('groupedProduct', $groupedProduct);
}
然后在刀片中,我显示如下:
<select name="product_name" id="product_name">
<option selected="true" disabled="disabled">Choose Product</option>.
@foreach(array_keys($groupedProduct) as $prod_name)
<option value="{{ $groupedProduct[$prod_name]}}"> {{$prod_name}} </option>
@endforeach
</select>
现在它的 javascript/jquery 代码如下:
$('select').on('change', function() {
var prodName = $('#product_name').find(":selected").text();
我还没有走得更远。 接下来我需要做的是使用 prodName 访问 productattribute 表,以便检索特定产品的所有属性/变体并显示一个表,用户可以通过该表选择他们需要的变体。
有人可以帮忙吗? 如果有什么不明白的,请告诉我。 如果您理解它,请告诉我应该如何进一步处理。
非常感谢!
【问题讨论】:
标签: javascript php jquery mysql laravel