php - 在 laravel 中使用 slug 创建帖子时出现重复条目
问题描述
当我创建第一个帖子时,它会成功创建,但是当我创建另一个帖子时,我会收到此错误,并且我的 slug 将无法正常工作。
这是错误:
“SQLSTATE [23000]:完整性约束违规:1062 键“posts_slug_unique”的重复条目“1”(SQL:插入
posts
(title
、、、、body
)值(Gacho 的第二篇文章updated_at
,created_at
Gacho 的第二篇文章的正文,2018-08-10 15: 2018-08-10 19:30 15:19:30))
这是我的代码。
class AddSlugToPosts extends Migration
{
public function up()
{
Schema::table('posts', function ($table) {
$table->string('slug')->unique()->after('body')->default();
});
}
public function down()
{
Schema::table('posts', function ($table) {
$table->dropColumn('slug');
});
}
}
public function rules()
{
return [
'title' => 'required|max:255',
'body' => 'required',
'slug' => 'required|alpha_dash|min:5|max:255|unique:posts,slug'
];
}
public function store(PostRequest $request)
{
$post = Post::create($request->all());
Session::flash('success', 'The blog post was successfully saved!');
return redirect()->route('posts.show', $post->id);
}
解决方案
您应该首先从迁移中删除 Default()。
希望您已将默认值设置为 1,这是第二次保存的。
可能的错误
1-您没有像这样在模型中的可填充数组中添加 slug。
protected $fillable = ['slug','title','body'];
2-您以错误的名称调用 slug,或者您根本没有发送 slug 请求。如果您不是从表单发送,则在控制器中创建它。
3-您的 slug 字段名称与数据库中的列名称不同。
推荐阅读
- windows - 在 Windows Server 上启用 docker 实验功能
- r - 使用 dplyr 来用一个带有条件的 df 的内容填充一个新的 df
- android - 渲染到附加到帧缓冲区对象的纹理(纹理显示为黑色)
- javascript - React 自己的钩子不会重新渲染使用过的组件
- spring-boot - Spring boot @Retryable 在服务类中不起作用
- amazon-web-services - 带有 debezium 嵌入式连接器的外部偏移存储
- python - 如何在 venv 中运行 Python 脚本?
- node.js - 如何为 Lambda@Edge 使用环境变量
- angular - IIS URL重写模块的使用
- jquery - jquery datatable SearchPanes分页状态不保持