如何使用相同的电子邮件地址保存自己的个人资料?

时间:2016-03-04 05:09:18

标签: validation laravel-5.2 user-profile

我是Laravel的新手,我正在创建一个“更新个人资料”页面。一切都很好,除了保存我的个人资料。由于我已宣布电子邮件必须是唯一的 - 我将收到错误。有一个完美的感觉。我一直在阅读this SO post关于我认为同样问题的内容。

我正在使用表单请求来处理我的验证:

 public function rules()
{
    return [
        'name' => 'required',
        'email' => 'required|unique:users,email,' . Auth::user()->id,
        ...
     ]
}

我的控制器:

public function store(UpdateAccountRequest $request)
{
    $input = $request->all();

    $user = new User();

    $user->name = $input['name'];
    $user->email = $input['email'];

    if ($user->save()) {
         ...
    }
    ...
}

看起来我在mysql端遇到错误:

Integrity constraint violation: 1062 Duplicate entry 'name@email.com' for key 'users_email_unique' 

来自CodeIgniter,过去我会有一个隐藏字段,其中包含用户ID或其他内容,并检查用户ID是否正在编辑自己的帐户。如果是这样,验证将通过。我不确定最好的方法。

谢谢!

1 个答案:

答案 0 :(得分:0)

<强>解

我的愚蠢错误。我正在创建一个新用户,然后尝试保存它。这就是为什么我能够通过Laravel的验证,而不是MySQL的独特索引。

我需要的是:

  Select   
      CASE 
         WHEN (GROUPING(p. product_name ) = 1) THEN 'Total'
         ELSE p. product_name END AS ProductName,
  (( o.item_price - o.discount_amount )*  o.quantity) as Total_Amount  

  from 
      products as p
  inner join 
      order_items as o on o.product_id  = p.product_id
  group by  
      p.product_name, (( o.item_price - o.discount_amount )* o.quantity) with rollup

而不是:

gvBankDetails.Rows[e.RowIndex].Cells[0].Text