📅  最后修改于: 2023-12-03 14:43:46.712000             🧑  作者: Mango
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 模型和验证器,您可以很快地构建出一个强大的应用程序并处理大量数据。