【发布时间】:2017-12-08 08:36:29
【问题描述】:
我有两个表:assignments 表(列assignment_id、Staff Name、asset_id、department、date、status)和一个assets 表(列asset_id、tag_name、serial_number、model_number、color)。 asset 表列与 assignments 表相关联。我想在 assignments 表中执行插入,但在插入之前,我想检查 assignments 表中是否已经存在 asset_id 以及是否为 status = 'Active' 那么插入应该抛出错误/不应该发生。
AssignmentsController
class AssignmentController extends Controller
{
public function assignment(){
$assignments = Assignment::all();
return view('assignment/index', ['assignments' => $assignments]);
}
public function add(Request $request){
$this->validate($request, [
'assignment_id' => '',
'staff_name' => 'required',
'asset_id' => 'required',
'department' => 'required',
'date' => 'required',
'status' => 'required'
]);
$assignments = new Assignment;
$assignments ->assignment_id = $request->input('assignment_id');
$assignments ->staff_id = $request->input('staff_id');
$assignments ->asset_id = $request->input('asset_id');
$assignments ->department_id = $request->input('department_id');
$assignments ->date = $request->input('date');
$assignments ->status = $request->input('status');
$count = Assignment::where('status', '=' ,'Active' )->
where('asset_id', '=' ,$assignments->asset_id)->
count();
if($count) {
abort(405, 'Trying to assign an already assigned asset');
}
$assignments ->save();
return redirect('/assignment/index') ->with('info', 'New Assignment Saved Successfully!');
}
Assginment.php
class Assignment extends Model
{
protected $primaryKey = 'assignment_id';
public function asset()
{
return $this->belongsTo('App\Asset', 'asset_id');
}
}
AssignmentsController 中的以下变量和 if 语句总是抛出 if statement 中的错误,无论它是否为真并且插入不会发生但是当整个语句被清除时,插入发生。
$count = Assignment::where('status', '=' ,'Active' )->
where('asset_id', '=' ,$assignments->asset_id)->
count();
if($count) {
abort(405, 'Trying to assign an already assigned asset');
}
所以我想要一种方法来检查要插入的记录是否已经存在,条件是 asset_id 存在,然后检查它是否是 status ='Active' 然后抛出一个错误,但如果不是,则插入发生。如果您理解它,请帮助。提前致谢。
【问题讨论】:
-
即使没有 'status', '=' ,'Active' 和 'asset_id', '=' ,$assignments->asset_id 也会出现错误??
-
是的,即使您没有 'status', '=' ,'Active' 和 'asset_id', '=' ,$assignments-> 也会抛出
abort(405, 'Trying to assign an already assigned asset');错误资产ID
标签: php laravel-5 error-handling