php - Laravel Sqlite 外键
问题描述
我正在尝试将数据添加到名为 Booking 的 sqlite 数据库表中。
这需要通过 Rego 列链接到我的名为 Vehicle 的表。我已将此添加为外键。
谁能帮我解释为什么我不能达到这个结果?我目前收到以下错误:
SQLSTATE[HY000]:一般错误:1 个外键不匹配 - “Booking”引用“Vehicle”(SQL:插入 Booking(rego,first_last,start_time,finish_time)值(744HGB,Franklin Monkie,hhhh,hhhh))
看我的代码。
HTML:
<form method="post" action="{{url("book_vehicle_action")}}">
{{csrf_field()}}
<select name="first_last">
@foreach($clients as $client)
<option>{{$client->First_Last}}</option>
@endforeach
</select>
<select name="rego">
@foreach($vehicles as $vehicle)
<option>{{$vehicle->Rego}}</option>
@endforeach
</select>
<br>
<p>
<label> Start Date and Time (DD/MM/YY HH:MM:SS) <label> <br>
<input type="text" name="start_time">
</p>
<p>
<label> Start Date and Time (DD/MM/YY HH:MM:SS) <label> <br>
<input type="text" name="finish_time">
</p>
<input type="submit" value="book">
</form>
路线:
Route::get('/book_vehicle', function() {
$sql = "select * from Client";
$sql2 = "select * from Vehicle";
$vehicles = DB::select($sql2);
$clients = DB::select($sql);
return view('book_vehicle')
->with('clients', $clients)
->with('vehicles', $vehicles);
});
Route::post('book_vehicle_action', function() {
$rego = request('rego');
$first_last = request('first_last');
$start_time = request('start_time');
$finish_time = request('finish_time');
$bookingID = book_vehicle($rego, $first_last, $start_time, $finish_time);
return redirect(url("/"));
});
function book_vehicle($rego, $first_last, $start_time, $finish_time) {
$sql = "insert into Booking (rego, first_last, start_time, finish_time) values (?, ?, ?, ?)";
DB::insert($sql, array($rego, $first_last, $start_time, $finish_time));
$bookingID = DB::getPdo()->lastInsertId();
return($bookingID);
}
D B:
CREATE TABLE IF NOT EXISTS Booking (
BookingID INTEGER NOT NULL PRIMARY KEY autoincrement,
First_Last VARCHAR(24) NOT NULL,
Start_Time VARCHAR(12) NOT NULL,
Finish_Time VARCHAR(12) NOT NULL,
Rego VARCHAR(12) REFERENCES Vehicle(Rego)
);
CREATE TABLE IF NOT EXISTS Vehicle (
VehicleID INTEGER NOT NULL PRIMARY KEY autoincrement,
Rego VARCHAR(12) NOT NULL,
Make VARCHAR(12),
Model VARCHAR(12) NOT NULL,
Age INT(4),
Odometer VARCHAR(12) NOT NULL
);
CREATE TABLE IF NOT EXISTS Client (
License_No CHAR(12) PRIMARY KEY NOT NULL,
First_Last VARCHAR(24) NOT NULL,
DOB INT(4) NOT NULL,
License_Type CHAR NOT NULL,
PhoneNo VARCHAR(12)
);
INSERT INTO Booking(BookingID, First_Last, Start_Time, Finish_Time, Rego)
VALUES
(1, "Thomas Salad" , "2021-09-16 12:00:00", "2021-010-16 12:00:00", "744HGB")
INSERT INTO Vehicle(VehicleID, Rego, Make, Model, Age, Odometer)
VALUES
(3, "744HGB", "Volkswagon", "Jetta", 2009, 68909);
解决方案
推荐阅读
- python - Python tkinter 嵌套函数在单独的窗口中
- powershell - 在 Active Directory 中更新多个用户 - 国家和经理属性问题
- c++ - 如何在子进程结束后立即捕获它?
- c# - Microsoft Visual Studio 社区 2019 版本 16.8.2。创建新的移动应用程序(Xamarin Forms)项目时出现问题
- python-3.x - 为什么我的第一条机器人消息(通过 REST API)显示在我的第一条线程消息之前?
- php - 带/不带 TRIM 的查询
- runtime-error - “/”应用程序中的服务器错误。运行时错误
- angular - 离子用户界面未显示
- python - 字符串格式未按预期工作
- java - 计算时钟滴答以评估性能