У меня есть две таблицы: таблица assignments
(columns asset_id
, Staff Name
, asset_id
, department
, date
, status
) и таблица assets
(столбцы asset_id
, tag_name
, serial_number
, model_number
, color
). Столбцы таблицы активов связаны с таблицей присвоений . Я хочу выполнить вставку в таблицу назначений, но перед вставкой, я хочу проверить, существует ли asset_id
в таблице назначений, и если это status
= «Активный», тогда вставка должна вызывать ошибку / не должна произойти.
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!'); }
-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'); } }
Вышеуказанная переменная и оператор if в AssignmentsController
всегда выдает ошибку в 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'); }
-$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
существовала asset_id
тогда проверьте ее status
если он = «Активен», а затем выдает ошибку, но если нет, то происходит вставка. Пожалуйста, помогите, если вы это понимаете. Заранее спасибо.