Laravel如何将输入数组集合与从数据库中选择的数组集合进行比较

时间:2018-01-17 10:00:54

标签: php arrays laravel-5

我真的需要帮助解决一周以来遇到的问题。我有一张发票表格 enter image description here 其中我可以在数组中添加多个项目来存储在数据库中

<?php
   $arrayNumber = 0;
      for($x = 1; $x < 4; $x++) { ?>
     <tr id="row<?php echo $x; ?>" class="orderItem  <?php echo $arrayNumber; ?>">
        <td>
            <div class="form-group">
                <select class="js-example-basic-single form-control" name="productName[]" id="productName<?php echo $x; ?>" onchange="getProductData(<?php echo $x; ?>)" required>
                    <option value="">~~SELECT~~</option>
                    @foreach($stocks as $stock)
                        <option value="{{$stock->id}}">{{$stock->abbr}}</option>
                    @endforeach
                </select>
            </div>
        </td>
        <td>
            <div class="form-group row"  style="padding-left:10px;padding-right:10px">
                <input type="number" name="rate[]" id="rate<?php echo $x; ?>" autocomplete="off" class="form-control" required/>                             
                <!-- <input type="hidden" name="rateValue[]" id="rateValue<?php echo $x; ?>" autocomplete="off" class="form-control"  required/>   -->
            </div>
        </td>

        <td>
            <div class="form-group row"  style="padding-left:10px;padding-right:10px">
                <input type="number" name="quantity[]" id="quantity<?php echo $x; ?>" onkeyup="getTotal(<?php echo $x ?>)" autocomplete="off" class="form-control" min="1" required/>

            </div>
        </td>
        <td>
            <div class="form-group row"  style="padding-left:10px;padding-right:10px">
                <input type="text" name="total[]" id="total<?php echo $x; ?>" autocomplete="off" class="form-control" disabled="true" />                                
                <input type="hidden" name="totalValue[]" id="totalValue<?php echo $x; ?>" autocomplete="off" class="form-control" />    
            </div>
        </td>
        <th>
            <button class="btn btn-default removeProductRowBtn" type="button" id="removeProductRowBtn" onclick="removeProductRow(<?php echo $x; ?>)">
                <i class="icofont icofont-minus"></i>
            </button>
        </th>
    </tr>
<?php
$arrayNumber++;
} // /for
?>

的形式存储在数据库中
$data = $request->all();

    $productName = count($data['productName']);
    for($i=0; $i < $productName; $i++){

        $stt = new StockTransferTransaction;

        $stt->stock_id = $data['productName'][$i];
        $stt->rate = $data['rate'][$i];


        $stt->quantity = $data['quantity'][$i];
        $stt->valuation = $data['totalValue'][$i];
        $stt->stock_transfer_id = $id;
        $stt->save();

        // go to stock

        $stock = Stock::where('id', $productName)->get();

        dd($stock);

        // save all
        $quantityApproval->save();
        $stock->save();
    }

哪个成功

这是我希望从另一个表中进行一些检查的问题,例如,如果请求中的数量多于该表中的内容然后在保存到数据库之前保存到数据库之前返回错误

我努力使用了

$data = $request->all();

    $productName = count($data['productName']);
    for($i=0; $i < $productName; $i++){

    $stock = Stock::select('quantity')->whereIn('id', $data['productName'])->get();
     // $stock = Stock::find($data['productName']);
     dd($stock, $request->all());
    }

enter image description here

并且不知道如何比较请求数组和收集结果至少数量以返回响应。我需要帮助很严重。这里有人,有人,任何人。非常感谢

2 个答案:

答案 0 :(得分:0)

据我了解,您想要比较现有项目和新项目。 在我看来,你应该为数据库中的项目存储一个md5。然后,您也可以将请求的项目转换为md5。

md5(collection) = md5(request)

答案 1 :(得分:0)

根据我的理解,您需要检查所有列出的产品并计算每个条目的数量并进行比较。如果任何单个条目数量较高,则需要抛出错误。

您可以通过以下方式撰写:

$data = $request->all();

foreach ($data['productName'] as $key => $productName) {
    $stock = Stock::select('quantity')->where('id', $data['productName'])->first();

    if ($stock->quantity > $data['quantity'][$key]) {
        return back()->with('error', 'Quantity is bigger that stock amount');
    }
}