簡體   English   中英

LARAVEL 在數據庫中插入多行

[英]LARAVEL Insert MULTIPLE ROWS in database

我正在嘗試使用單擊在兩個數據庫表中插入多行數據,但此代碼一次只插入一行。 當我嘗試 dd($request->all()); 我在數組中得到數據,但只插入一行。 有什么問題,我該如何解決?

受保護的 $table = 'biniyojan';

////修改后的控制器//////

public function bbcreate(Request $request)
{

    //dd($request->all());
    $biniyojan_details = new BiniyojanDetails();


    $biniyojan = new Biniyojan();
    $biniyojan->details_id = $biniyojan_details->details_id;
    $biniyojan->date =  $request->date;
    $biniyojan->ab =  $request->ab;
    $biniyojan->school =  $request->school;
    $biniyojan->behora =  $request->behora;
    $biniyojan->save();


    $biniyojan_details = new BiniyojanDetails();
    if (!empty($request->school)) {
        for ($i = 0; $i < count((array)$request->school); $i++) {
        $biniyojan_details['biniyojan_id'] = $biniyojan->id;
        $biniyojan_details['school'] = $request->school[$i];
        $biniyojan_details['source'] = $request->source[$i];
        $biniyojan_details['kriyakalap'] = $request->kriyakalap[$i];
        //$biniyojan_details->debit_credit = $request->debit_credit[$i];
        //$biniyojan_details->debit_credit_type = $request->debit_credit_type[$i];
        $biniyojan_details['cash'] = $request->cash[$i];
        $biniyojan_details->save();
        }
    }
    return redirect()->back()->with('status', 'Inserted');
} 

/////查看刀片////////

 <form method="POST" action="{{ route('bbcreate') }}">
    @csrf
    <div class="form-row col-x1-3">
        <div class="form-group     col-md-2">
            <input type="date" placeholder="मिति" value="@php echo $today; @endphp" name="date" class="form-control" id="inputCity" required>
        </div>
        <div class="form-group col-md-2">
            <select id="inputState" placeholder="" name="ab" class="form-control" required>
                <option>2079-080</option>
                <option>2078-079</option>
            </select>
        </div>



        <div class="form-group     col-md-2">
            <select id="inputState" name="school" class="form-control" required>
                <option selected disabled>स्रोत पाउने संस्था </option>
                @foreach ($school_array as $sch)
                <option value="{{ $sch -> name }}">{{ $sch -> name}}</option>
                @endforeach
            </select>
        </div>
    </div>
    <div id="form-field">
        <div class="form-row col-x1-3">
            <div class="form-group col-md-2">
                <select id="source" name="source[]" class="form-control" required>
                    <option selected disabled value="">स्रोत</option>
                    <option>केन्द्र</option>
                    <option>प्रदेश</option>
                    <option>स्थानीय</option>
                    <option>अन्य</option>
                </select>
            </div>
            <div class="form-group col-md-2">
                <select id="kriyakalap" name="kriyakalap[]" class="form-control" required>
                    <option selected disabled>क्रियाकलाप</option>
                    @foreach ($bini as $bi)
                    <option value="{{$bi->kriyakalap}}"> {{$bi->kriyakalap}}</option>
                    @endforeach

                </select>
                @foreach ($bini as $bi)

                @endforeach
            </div>
            <div class="form-group col-md-2">
                <select name="debit_credit[]" id="debit_credit" class="form-control" >
                    <option selected="selected" disabled>डेबिट / क्रेडिट</option>
                </select>
            </div>
            <div class="form-group col-md-2">
                <select name="debit_credit_type[]" id="debit_credit_type" class="form-control" >
                    <option selected="selected" disabled>डेबिट / क्रेडिट प्रकार</option>
                </select>
            </div>

            <div class="form-group col-md-2">
                <input type="text" placeholder="रकम" name="cash[]" class="form-control" id="price" required>
            </div>
            <div class="form-group col-md-2">
                <input type="button" class="btn btn-success" name="add" id="add" value="+">
            </div>
        </div>
    </div>
    <div class="form-row col-x1-3" style="justify-content:left ;">
        <div class="form-group     col-md-2">
            <input type="text" placeholder="ब्यहोरा" name="behora" class="form-control" id="behora" required>
        </div>

        <div class="form-group col-md-2">
            <input type="submit" id="submit" name="submit" value="राख्नुहोस्" class="btn btn-primary ">

        </div>

        @if (session('status'))
        <div class="alert alert-success">
            {{ session('status') }}
            {{-- message --}}
        {!! Toastr::message() !!}
        </div>
        @endif

    </div>
    <div form-row col-x1-3 id="showdata" class="showdata">
        <p class="show_data"></p>
        <p id="showdata" class="showdata"></p>
    </div>
</form>


//////jQuery For Repeat form////////[enter image description here][1]
<!-- form repeat -->

<script type="text/javascript">
        $(document).ready(function() {
        var html = '<span><div id="form-field"> <div class="form-row col-x1-3"> <div class="form-group col-md-2"> <select id="source" name="source[]" class="form-control" required> <option selected disabled value="">स्रोत</option> <option>केन्द्र</option> <option>प्रदेश</option> <option>स्थानीय</option> <option>अन्य</option> </select> </div> <div class="form-group col-md-2"> <select id="kriyakalap" name="kriyakalap[]" class="form-control" required> <option selected disabled>क्रियाकलाप</option> @foreach ($bini as $bi) <option value="{{$bi->kriyakalap}}"> {{$bi->kriyakalap}}</option> @endforeach </select> @foreach ($bini as $bi) @endforeach </div> <div class="form-group col-md-2"> <select name="debit_credit[]" id="debit_credit" class="form-control" required> <option selected="selected" disabled>डेबिट / क्रेडिट</option> </select> </div> <div class="form-group col-md-2"> <select name="debit_credit_type[]" id="debit_credit_type" class="form-control" required> <option selected="selected" disabled>डेबिट / क्रेडिट प्रकार</option> </select> </div> <div class="form-group col-md-2"> <input type="text" placeholder="रकम" name="cash[]" class="form-control" id="price" required> </div> <div class="form-group col-md-2"> <input type="button" class="btn btn-danger" name="remove" id="remove" value="-"> </div> </div> </div></span>';
        var max = 5;
        var x = 1;
        $("#add").click(function() {
            if (x <= max) {
                $("#form-field").append(html);
                x++;
            }
        })
        $("#form-field").on('click', '#remove', function() {
            $(this).closest('span').remove();
            x--;
        });
    });

</script>

<!-- form repeat -->

正如@aynber 指出的那樣,您需要移動該行$biniyojan_details = new BiniyojanDetails(); 在循環內部,因此它為每次迭代啟動一個新的 object。

另一種解決方案是同時插入所有條目(更好的性能)。 為此,我們首先准備要插入的數據

public function bbcreate(Request $request)
{

    //dd($request->all());
    $biniyojan_details = new BiniyojanDetails();


    $biniyojan = new Biniyojan();
    $biniyojan->details_id = $biniyojan_details->details_id;
    $biniyojan->date =  $request->date;
    $biniyojan->ab =  $request->ab;
    $biniyojan->school =  $request->school;
    $biniyojan->behora =  $request->behora;
    $biniyojan->save();


    $biniyojanDetailsToBeInserted = [];
    if (!empty($request->school)) {
        for ($i = 0; $i < count((array)$request->school); $i++) {
            $biniyojan_details = [];
            $biniyojan_details['biniyojan_id'] = $biniyojan->id;
            $biniyojan_details['school'] = $request->school[$i];
            $biniyojan_details['source'] = $request->source[$i];
            $biniyojan_details['kriyakalap'] = $request->kriyakalap[$i];
            //$biniyojan_details['debit_credit'] = $request->debit_credit[$i];
            //$biniyojan_details['debit_credit_type'] = $request->debit_credit_type[$i];
            $biniyojan_details['cash'] = $request->cash[$i];
            $biniyojanDetailsToBeInserted[] = $biniyojan_details;
        }
    }
    if ($biniyojanDetailsToBeInserted) {
        BiniyojanDetails::insert($biniyojanDetailsToBeInserted);
    }
    return redirect()->back()->with('status', 'Inserted');
} 

您的代碼僅創建一行,但值得注意的是它創建了一行,但包含數組的最后一個數據。

因為您沒有在循環內制作 object,所以它在循環外,所以循環在同一個 object 上運行,並在每次循環運行時更新其屬性並保存它。

在循環內創建 object ,這樣每次都會創建新的 object ,這意味着每次都會創建新行而不是更新同一行。

如果數組鍵的名稱與數據庫表列的名稱相同,則有更好的方法。

Biniyojan::insert($request->data);

它是這樣工作的。

User::insert([
    ['name' => 'John', 'email' => 'john@example.com'],
    ['name' => 'Marina', 'email' => 'marina@example.com'],
]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM