簡體   English   中英

如何一次在表中插入多行?

[英]How to insert multiple rows into a table at one time?

我需要將一個查詢中的 5 條記錄發送到一個表中(id_book - 每次都不同),所以我需要通過單擊按鈕創建 10 條記錄。 此代碼顯示此錯誤消息: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id_book.0' in 'where clause' (SQL: select count( ) as aggregate from connect_user_books where id_book . 0 = 6* (MY TEXT : 6 是我需要添加這些記錄的列表的 ID) )

我的控制器:

public function create()
{
    $books = Book::all();

    return view('connectUserBook.create', compact('books'));
}

public function store(Request $request)
{
    $this->validate($request, [
        'id_user_select' => 'required',
        'id_book' => 'required|array',
        'id_book.*' => 'exists:connect_user_books',
    ]);

    $userId = $request->input('id_user_select');

    // Vytvoření
    foreach ($request->input('id_book') as $book) {
        $connect = new ConnectUserBook;
        $connect->id_user_select = $userId;
        $connect->id_book = $book;
        $connect->save();
    }

    return redirect('/dashboard')->with('success', 'Výběr editován!');
}

我的 HTML 標記:

{{ Form::open(['action' => 'ConnectUserBookController@store', 'method' => 'POST']) }}

    <div>
        <label class="form-label">Vybraný výběr *</label>
        <div>
            <select name="id_user_select" class="form-control">

                <?php
                    $select_id = $_GET["id"];
                    $select_id;
                    $res = mysqli_query($link, "select * from selected_books Where id = $select_id");

                    while($row = mysqli_fetch_array($res))
                    {
                ?>
                <option value="<?php echo $row["id"]; ?>"> <?php echo $row["title"]; ?></option>                     
                <?php
                    }
                ?>
            </select>
        </div>
    </div>
    <br>

    @for ($i = 0; $i < 11; $i++)
        <div>
            <label class="form-label">Book {{ $i }} *</label>
            <div>
                <select name="id_book[]" class="form-control">

                    @foreach ($books as $book)
                        <option value="{{ $book->id_book }}">{{ $book->nazev }} - {{ $book->pocet_stranek }} stran</option>
                    @endforeach

                </select>
            </div>
        </div>
    @endfor

{{Form::submit('Submit', ['class' => 'btn btn-primary'])}}

{{ Form::close() }}

制作一個數組,使用 eloquent 的插入方法。

$data = array()
foreach ($request->input('id_book') as $book) {
        $data[] = array('id_user_select'=>$userId,'id_book'=>$book);

    }

ConnectUserBook::insert($data); 

根據您的錯誤,您需要在列中指定。 添加一列以與存在的哪一列進行比較?

'id_book.*' => 'exists:connect_user_books,column_name',

注意:-它不插入時間戳。

暫無
暫無

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

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