在 Laravel 5.4 中插入多个表单,通常涉及到以下几个步骤:
首先,为每个表创建迁移文件:
php artisan make:migration create_users_table
php artisan make:migration create_payments_table
编辑迁移文件以定义表结构:
// database/migrations/xxxx_xx_xx_create_users_table.php
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamps();
});
}
// database/migrations/xxxx_xx_xx_create_payments_table.php
public function up()
{
Schema::create('payments', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->decimal('amount');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
}
运行迁移:
php artisan migrate
为每个表创建相应的模型:
php artisan make:model User
php artisan make:model Payment
创建一个控制器来处理表单提交:
php artisan make:controller FormController
在 FormController
中编写处理逻辑:
namespace App\Http\Controllers;
use App\User;
use App\Payment;
use Illuminate\Http\Request;
class FormController extends Controller
{
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required|email|unique:users',
'amount' => 'required|numeric',
]);
$user = User::create([
'name' => $request->input('name'),
'email' => $request->input('email'),
]);
$payment = Payment::create([
'user_id' => $user->id,
'amount' => $request->input('amount'),
]);
return redirect()->back()->with('success', 'Data saved successfully!');
}
}
在 routes/web.php
中定义路由:
Route::post('/submit-forms', 'FormController@store')->name('forms.store');
创建一个视图文件 resources/views/forms.blade.php
来显示表单:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Multiple Forms</title>
</head>
<body>
<form action="{{ route('forms.store') }}" method="POST">
@csrf
<div>
<label for="name">Name:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="amount">Amount:</label>
<input type="number" id="amount" name="amount" required>
</div>
<button type="submit">Submit</button>
</form>
</body>
</html>
原因:用户输入的数据不符合验证规则。
解决方法:检查 validate
方法中的规则,并确保前端输入与规则匹配。
原因:可能是由于外键约束或其他数据库问题。
解决方法:查看 Laravel 的日志文件(通常位于 storage/logs/laravel.log
),检查具体的错误信息并进行相应调整。
原因:可能是路由配置错误或控制器方法未正确处理请求。 解决方法:检查路由定义和控制器方法的逻辑,确保所有步骤都正确执行。
通过以上步骤,你应该能够在 Laravel 5.4 中成功插入多个表单数据。
领取专属 10元无门槛券
手把手带您无忧上云