作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在一直在做一个项目。在这一点上,我被困住了。我只想在我的验证中忽略 laravel 的软删除,它具有唯一的名称列 parent_id。
例如:假设 A & B 是类别。我希望如果 C 是 A 的子类别,那么没有其他 C 数据不写在 A 中。但是 C 可以写在 B 类别中。
我还希望如果用户软删除数据,那么他可以插入具有相同名称和相同类别的相同数据。
我的 table 是
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->integer('parent_id')->nullable()->default(0);
$table->integer('admin_id')->nullable()->default(0);
$table->boolean('active')->nullable()->default(1);
$table->unique(array('parent_id', 'name', 'deleted_at'));
$table->rememberToken();
$table->timestamps();
$table->softDeletes();
});
我的 Store 方法是
public function store(Request $request)
{
$this->validate($request, [
'category' => 'required|unique:categories,parent_id,NULL,name,NULL,id,deleted_at,NULL',
'parent' => 'required',
'_token' => '',
]);
try {
$category = New Category();
$category->name = $request['category'];
$category->parent_id = $request['parent'];
$category->remember_token = $request['_token'];
$category->save();
$request->session()->flash('alert-success', 'Sub Category Successfully Created!');
return redirect('subcategory');
} catch(\Illuminate\Database\QueryException $e) {
return redirect()->back()
->with('status','<strong>'.$category.' already exist!</strong>');
}
}
我的模型是
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Category extends Model
{
use Notifiable;
use SoftDeletes;
protected $fillable = [
'category',
];
protected $dates = ['deleted_at'];
}
最佳答案
尝试
‘category' => 'required|unique:categories,parent_id,NULL,id,deleted_at,NULL,name,’.$request['category'],
有关更多详细信息,请将参数分成对:
[类别,parent_id]
categories
的 parent_id
列中实现唯一规则。 如果parent_id的位置与左边的“category”相同,则可以忽略。例如
‘name’ => ‘unique:products,name’ 可以简化为
‘name’ => ‘unique:products’。
[NULL, id]
[deleted_at, NULL]
因此,执行唯一规则的最终范围是从以下查询得到的结果:
Select count(*) from categories
where id is not null
and deleted_at is null
and name is ??$request['category']??
如果 count(*) 为 0,则验证通过。否则,失败。
在第三对之后,您可以根据需要设置任意数量的约束。比如:
=> 4. [事件,真实]
=> 5. [name, hello] name不是'hello'的地方可以用'!hello'表示
关于php - 如何在 laravel 5.3 中忽略 laravel 多个唯一列中的软删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41300438/
我是一名优秀的程序员,十分优秀!