gpt4 book ai didi

php - laravel 中违反完整性约束

转载 作者:行者123 更新时间:2023-12-04 10:12:32 25 4
gpt4 key购买 nike

enter image description here enter image description here我在 URL 中传递 ID 以到达我想要的 Form Page 但我想在点击提交时传递相同的 ID按钮,我想将相同的 ID 传递给数据库表名 "created_by"

这是我的路线:-

Route::get('/post/{id}', 'PostsController@create');

这是我的 Controller :-

public function create(){
return view('Posts.CreatePost');

}

public function store(Request $request){
post::create([
'title'=>$request->title,
'body'=>$request->body,
'user_id'=>Auth::user()->id,
'filled_by'=>Auth::user()->id,
'created_by' => $request->route('id'),
]);

return redirect('/profile/' . auth()->user()->id);
}

这是我的迁移:-

public function up(){
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id');
$table->string('title');
$table->text('body');
$table->string('created_by');
$table->string('filled_by');
$table->timestamps();

$table->index('user_id');
});
}

这是我的模型:-

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{ protected $gaurded = [];

protected $fillable = ['title', 'body', 'user_id', 'created_by', 'filled_by'];

public function user()
{
return $this->belongsTo(User::class);
}
}

我得到的错误是 SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'created_by' cannot be null (SQL: insert into posts (title, body, user_id, filled_by, created_by, updated_at, created_at) 值(adsa, asdas, 1, 1, ?, 2020-04-16 20:54:30, 2020-04-16 20:54:30))

我只是编程和 laravel 的初学者所以如果我很愚蠢请原谅

-谢谢

最佳答案

您收到此错误是因为 $request->route('id') 为空,并且您的数据库不允许 created_by 列为空。

要调试,请检查您的请求内容:

public function store(Request $request){

// Die and dump the request:
dd($request->all());

post::create([
'title'=>$request->title,
'body'=>$request->body,
'user_id'=>Auth::user()->id,
'filled_by'=>Auth::user()->id,
'created_by' => $request->route('id'),
]);

return redirect('/profile/' . auth()->user()->id);
}

我相信您没有从请求中正确检索值 id

您可能想用 $request->id 检索它,但如果不查看您的 Blade View 就很难说。如果您可以分享您的观点,我会编辑我的答案。


编辑:此外,您的路线不正确。要指向您的 Controller create() 方法,您不必将 id 传递给您的路由。根据定义,您想要创建一个尚不存在且因此尚无 ID 的对象。

使用 create() 方法,您的路线应该如下所示:

Route::get('/post/create', 'PostsController@create');

此外,如果你想遵循 Laravel 命名约定(相信我,你这样做),你的 Controller 应该以单数命名,而 url 模型则以复数命名。这意味着它看起来像这样:

Route::get('/posts/create', 'PostController@create');

你的 store() 方法的路由应该是这样的:

Route::post('/posts', 'PostController@store');

关于php - laravel 中违反完整性约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61259948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com