gpt4 book ai didi

php - Laravel-在插入之前检查记录是否存在

转载 作者:行者123 更新时间:2023-12-03 08:24:06 25 4
gpt4 key购买 nike

我有一个分配表(列的assignment_id,staff_name,asset_id,部门,日期,状态)
目前,我的工作分配表包含分配给员工及其部门的 Assets 的详细信息。

在代码中,我想检查asset_id是否已经存在且其状态=“ Activity ”,则插入应引发错误,但如果asset_id已经存在且其状态=“禁用”,则即使它是asset_id存在,插入也应继续进行。

另一方面,状态列的值为“禁用”表示当前未将 Assets 分配给某人,状态=“有效”表示该 Assets 当前已分配给某人,因为它已分配给某人,而您无法将其分配给某人为“有效” ”,但可以指定为“禁用”

For Instance
Assignment_id Staff Asset_id Department Status Date
1 Reynold AIO002 Logistics Disable 12.03.2014
2 Kyle AIO002 Business Dev Disable 12.04.2014
3 Trisha AIO002 Revenue Active 25.06.2015
4 Mary AIO002 Waybill Active 21.09.2015

假定最后一次插入为assignment_id'4',它应该抛出一个错误而不是插入,因为您当前无法将一项 Assets 分配给其他人,但是如果要禁用,则插入。

这也是 Controller :

AssignmentsController
    class AssignmentController extends Controller
{

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_name');
$assignments ->asset_id = $request->input('asset_id');
$assignments ->department_id = $request->input('department');
$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!');
}

当asset_id已经存在时,AssignmentsController中的以下变量和if语句总是在if语句中引发错误,而不是同时检查其状态并且不会发生插入。
 $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('asset_id', '=' ,$assignments->asset_id)->
where('status', '=' ,'Active')->
count();
if($count == 1 && $assignments->status != 'Disable') {
abort(405, 'Trying to assign an already assigned asset');
}

正如 IJas所建议的那样,我的代码中的错误是,我正在计算以前代码中的所有分配,并且如果有任何 Activity 状态,我会得到一个错误....我需要检查要分配的确切分配,激活或禁用,则分配将发生或与它的状态(激活/禁用)无关。谢谢你们。

关于php - Laravel-在插入之前检查记录是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47743569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com