【发布时间】:2020-01-05 17:34:51
【问题描述】:
我正在尝试将数据写入我的 SQLite 数据库。我认为我的迁移文件和外键有错误。
我试图更改文件的名称,使外键可以为空并清除 Laravel 的缓存。
您是否熟悉错误处理程序显示的错误,或者您能否将我指向一个可以帮助我了解我做错了什么的页面?
提前非常感谢您。
迁移文件:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateSqrTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('sqrs', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedInteger('user_id')->nullable();
$table->string('qr_link');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('sqr');
}
}
模型文件:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
// sQR stands for Saved QR-Code
class sqr extends Model
{
protected $fillable = [
'qr_link', 'user_id'
];
}
保存的控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\sqr;
class saveController extends Controller
{
public function save(Request $request)
{
$sqr = new sqr;
$sqr->qr_link = $request->qr_link;
$sqr->user_id = 1;
$sqr->save();
return redirect('/');
}
}
前端刀片文件:
<form method="post" action="/save">
@csrf
<input type="hidden" name="qr_link" value="{{ session('url') }}">
<button class="btn btn-success">Save this QR</button>
</form>
我得到的错误如下:
SQLSTATE[23000]: Integrity constraint violation: 19 FOREIGN KEY constraint failed (SQL: insert into "sqrs" ("qr_link", "user_id", "updated_at", "created_at") values (images/1567444499.svg, 1, 2019-09-02 17:37:23, 2019-09-02 17:37:23))
【问题讨论】:
-
您确定数据库中有一个 id = 1 的用户吗?
-
@dparoli 哎呀......谢谢你帮助我。
-
@S-o 这是什么意思?如果这解决了问题,那么这个问题可能对其他人没有帮助,应该删除。你可以自己做。否则,请详细说明“糟糕”的含义。
-
这是我问题的答案。我不能给他一颗星,因为这是一个普通的 t。
-
您可以编写自己的答案并将其标记为已接受。对于那些寻找未回答问题的人非常有帮助。