我正在尝试将数据写入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))
答案 0 :(得分:0)
@dparoli在这篇文章的评论中说:
“您确定数据库中有一个id = 1的用户吗?– dparoli”
这是我的问题的答案。因为数据库中没有nog user = 1,所以它崩溃了。