📜  Laravel 从表单中插入多行 - PHP (1)

📅  最后修改于: 2023-12-03 14:43:46.712000             🧑  作者: Mango

Laravel 从表单中插入多行 - PHP

Laravel 是一款流行的 PHP 框架,它提供了许多方便的功能来快速构建 Web 应用程序。其中一个常见的任务是从表单中插入多行数据。本篇文章将介绍如何使用 Laravel 中的 Eloquent 模型和表单验证器来执行此操作。

步骤
第一步 - 创建数据库表

首先,您需要准备一张数据库表来存储这些数据。您可以使用 Laravel 的迁移工具来创建表。在命令行中执行以下命令:

php artisan make:migration create_items_table --create=items

这将创建一个用于创建 items 表的迁移文件。在文件中定义表结构:

public function up()
{
    Schema::create('items', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        // 其他字段
        $table->timestamps();
    });
}

运行迁移命令来创建表:

php artisan migrate
第二步 - 创建模型

接下来,您需要创建一个模型来与数据库表进行交互。在命令行中执行以下命令:

php artisan make:model Item

这将创建一个 Item.php 文件,其中包含一个名为 Item 的 Eloquent 模型。您可以使用此模型来执行各种数据库操作,包括插入多行数据。

第三步 - 创建表单

您可以使用 Laravel 的 Blade 模板引擎来创建表单。在一个包含表单的视图中添加以下代码:

<form action="{{ route('items.store') }}" method="POST">
    @csrf

    <table>
        <thead>
            <tr>
                <th>Name</th>
                <!-- 其他标题 -->
            </tr>
        </thead>
        <tbody>
            <!-- 表单字段 -->
            <tr>
                <td><input type="text" name="name[]"></td>
                <!-- 其他字段 -->
            </tr>
            <tr>
                <td><input type="text" name="name[]"></td>
                <!-- 其他字段 -->
            </tr>
            <!-- 可以添加更多行 -->
        </tbody>
    </table>

    <button type="submit">Submit</button>
</form>

此表单包含一个 HTML 表格,其中包含表单字段。为了允许用户提交多行数据,您需要使用 name[] 格式的字段名称。这将创建一个名为 name 的数组,其中包含所有名称输入的值。

第四步 - 创建控制器方法

现在,您需要创建一个控制器方法,该方法将处理表单的提交。在您的控制器中添加以下代码:

public function store(Request $request)
{
    $validatedData = $request->validate([
        'name.*' => 'required|string|max:255', // 验证器规则
        // 其他规则
    ]);

    $items = [];
    foreach ($validatedData['name'] as $name) {
        $item = new Item;
        $item->name = $name;
        // 其他字段
        $item->save();

        $items[] = $item->toArray();
    }

    return response()->json([
        'items' => $items
    ]);
}

此方法首先将使用 Laravel 的表单验证器来验证传递的数据。在此例中,我们要求 name 属性为必填项,是字符串且不超过 255 个字符。可以根据具体需求添加其他验证规则。

如果表单数据通过验证,我们可以循环处理表单中每行的 name 值并将其插入到数据库中。在此,我们将 $items 数组填充了每个成功插入的行,以便后续使用。

最后,我们会将 $items 数组作为 JSON 响应返回给客户端。

第五步 - 路由

最后,您需要为该方法创建一个路由。在您的路由文件中添加以下代码:

Route::post('/items', 'ItemController@store')->name('items.store');

这将创建一个 POST 路由,该路由将请求发送到 ItemController 中的 store 方法。

结论

使用 Laravel ,从表单中插入多行数据非常容易。使用表格和数组字段名称,以及 Laravel 的 Eloquent 模型和验证器,您可以很快地构建出一个强大的应用程序并处理大量数据。