【发布时间】:2016-12-23 11:18:51
【问题描述】:
我现在一直在做一个项目。在这我被困住了。我只想在我的验证中忽略 laravel 的软删除,该验证具有唯一的名称列 parent_id。
例如: 假设 A & B 是类别。我希望如果 C 是 A 的子类别,那么没有其他 C 数据不写在 A 中。但是 C 可以写在 B 类别中。
我也希望如果用户 SoftDeletes 数据,那么他可以插入具有相同名称和相同类别的相同数据。
我的桌子是
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'];
}
【问题讨论】:
标签: php mysql laravel unique laravel-5.3