Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-插入前检查记录是否存在_Php_Laravel_Laravel 5_Error Handling - Fatal编程技术网

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

Php Laravel-插入前检查记录是否存在,php,laravel,laravel-5,error-handling,Php,Laravel,Laravel 5,Error Handling,我有一个分配表列分配id、员工姓名、资产id、部门、日期、状态 目前,我的分配表包含分配给工作人员及其部门的资产的详细信息 在代码中,我想检查资产标识是否已经存在,其状态为'Active',则插入应该抛出错误,但如果资产标识已经存在,且其状态为'Disable',则插入应该继续,即使资产标识已经存在 值为“禁用”的状态列表示资产当前未分配给某人。另一方面,状态=“活动”表示资产当前分配给某人,因为它分配给某人,您不能再次将其分配给其他人作为“活动”,但可以将其分配为“禁用” For Instan

我有一个分配表列分配id、员工姓名、资产id、部门、日期、状态 目前,我的分配表包含分配给工作人员及其部门的资产的详细信息

在代码中,我想检查资产标识是否已经存在,其状态为'Active',则插入应该抛出错误,但如果资产标识已经存在,且其状态为'Disable',则插入应该继续,即使资产标识已经存在

值为“禁用”的状态列表示资产当前未分配给某人。另一方面,状态=“活动”表示资产当前分配给某人,因为它分配给某人,您不能再次将其分配给其他人作为“活动”,但可以将其分配为“禁用”

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”是最后一次插入,它应该抛出一个错误,而不是插入,因为您当前不能将一个资产分配给不同的人,但如果它是“禁用”,则插入

这里还有控制器:

分配控制器

当资产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');
    } 
如果你明白了,请帮忙。提前感谢。

解决方案


正如所建议的,我的代码中的错误,我正在计算我以前代码中的所有分配,如果有任何活动状态,我会得到一个错误…我需要准确地检查我想要分配的分配是活动的还是禁用的,然后分配将发生,或者不与它的状态活动/禁用相关。谢谢大家。

那么,在分配活动分配时,您是否遇到任何错误?或者它只是保存它?无论分配是激活的还是禁用的,它都会在中止函数中抛出消息。只有当对已经存在的特定资产的活动分配发生错误时(这是您在代码中的错误),才应该如此,您正在计算所有分配,如果存在任何活动分配,您将得到该错误……您需要准确地检查您要分配的分配!你能帮我更新一下控制器的代码吗?因为我不知道怎么做@lewis4uNo,不幸的是我没有时间…你需要编码和学习更多。您可以尝试在这里找到帮助:请解释,如何以及为什么,不要仅仅发布代码,还要适当地格式化代码。。如果你这样做。。。它阻止了我们所有人的否决和浪费时间。欢迎光临,尽情享受。审查结束。
$invoice_details = new invoiceDetail();                        
$invoice_details->date = date('Y-m-d',strtotime($request->date));   $invoice_details->invoice_id = $invoice->id;  
$invoice_details->deptName_id = $request->deptName_id[$i];                            
$invoice_details->serialNo_id = $request->serialNo_id[$i];                                                              
$invoice_details->name = $request->name[$i];                                          
$invoice_details->Status = '0'; 
   
$count = invoiceDetail::where('status', '=' ,'0' )->where('serialNo_id', '=' ,$invoice_details->serialNo_id)->count();

if($count) 
{
    return redirect()->back()->with('error', 'Sorry! You have been trying to insert double data');
}          

             
  $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');
        }
$invoice_details = new invoiceDetail();                        
$invoice_details->date = date('Y-m-d',strtotime($request->date));   $invoice_details->invoice_id = $invoice->id;  
$invoice_details->deptName_id = $request->deptName_id[$i];                            
$invoice_details->serialNo_id = $request->serialNo_id[$i];                                                              
$invoice_details->name = $request->name[$i];                                          
$invoice_details->Status = '0'; 
   
$count = invoiceDetail::where('status', '=' ,'0' )->where('serialNo_id', '=' ,$invoice_details->serialNo_id)->count();

if($count) 
{
    return redirect()->back()->with('error', 'Sorry! You have been trying to insert double data');
}