Laravel:更新

时间:2018-05-07 06:47:56

标签: php laravel

我在更新期间使用了员工记录的验证。有些领域应该是独一无二的。但在更新员工记录期间,正在对唯一字段进行验证。我也研究过并尝试了解决方案。 但是我收到了这个错误:

  

错误代码:904错误消息:ORA-00904:“ID”:标识符无效   位置:71声明:选择计数()作为聚合   “EMPLOYEES”,其中“EMAIL”=:p0和“ID”<> :p1绑定:   [ad @ sdfdsf.com,3336](SQL:选择count()作为聚合来自   “EMPLOYEES”,其中“EMAIL”= ad@sdfdsf.com和“ID”<> 3336)

以下是我尝试解决方案:

public function update(Request $request, int $employee_id) {

    $this->validate ( $request, [
            'first_name' => "required|max:220|regex:/[a-z]/",
            'middle_name' => "max:120",
            'last_name' => "required|max:220|regex:/[a-z]/",
            'email' => "required|unique:employees, email, $employee_id|regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/",
            'home_phone' => "unique:employees,home_phone, $employee_id|numeric|regex:/^[09][0-9]{8,9}$/",
            'mobile' => "unique:employees,mobile, $employee_id|numeric|regex:/(9)[0-9]{9}/",
            'job_id' => 'required',
            'department_id' => 'required',
            'group_id' => 'required',
            'node' => 'required',
            'branch' => 'required',
            'username' => "required|unique:employees,username, $employee_id|regex:/[A-Za-z0-9][.][A-Za-z0-9]/",
            'exchange_username' => "required|unique:employees,exchange_username, $employee_id|regex:/[A-Za-z0-9][.][A-Za-z0-9]/",
            'extension' => "unique:employees,extension, $employee_id|numeric|regex:/[0-9]{4}/",
    ] );

    Employee::where ('employee_id', $employee_id )->update ( $request->only ( [ 
            'first_name',
            'middle_name',
            'last_name',
            'email',
            'address',
            'home_phone',
            'mobile',
            'job_id',
            'department_id',
            'group_id',
            'branch',
            'node', 
            'name',
            'username',
            'type',
            'exchange_username',
            'toggle_ivr_access',
            'extension',
            'attributed_team',
            'cable_team_id',
            'disable',

    ] ) );
    Session::flash ( 'message', 'The Employee is Successfully Updated.' );
    return redirect ()->route ( 'employees.index' );
}

2 个答案:

答案 0 :(得分:0)

  

Forcing A Unique Rule To Ignore A Given ID:

     

有时,您可能希望在唯一检查期间忽略给定的ID。   例如,考虑包含“更新配置文件”的屏幕   用户的姓名,电子邮件地址和位置。当然,你会想要的   验证电子邮件地址是否唯一。但是,如果只是用户   更改名称字段而不是电子邮件字段,您不需要   要抛出验证错误,因为用户已经是其所有者   电子邮件地址。

     

要指示验证者忽略用户的ID,我们将使用规则   类可以流畅地定义规则。在这个例子中,我们还将指定   验证规则作为数组而不是使用|性格   划定规则:

use Illuminate\Validation\Rule;

Validator::make($data, [
    'email' => [
        'required',
        Rule::unique('users')->ignore($user->id),
    ],
]);

答案 1 :(得分:0)

我弄清楚了错误并成功找到了解决方案。如果有人遇到类似的问题,这是工作解决方案。我必须传递单个用户的employee_id,而我传递的是多个用户的employee_id。

New-AzureADMSInvitation -InvitedUserEmailAddress "test@contoso.com" -InviteRedirectUrl https://myapps.microsoft.com -InvitedUserDisplayName 'TestUser' -InvitedUserMessageInfo $messageInfo -InvitedUserType member -SendInvitationMessage $true