【问题标题】:Error on array validation in laravel 5.4laravel 5.4 中的数组验证错误
【发布时间】:2018-02-13 05:35:27
【问题描述】:

我想在 laravel 5.4 中验证数组值。这是我的代码。它告诉我错误。 它显示了

"SQLSTATE[42S22]: 未找到列:1054 未知列 'card_no.0' 在 'where 子句' (SQL: select count(*) as aggregate from cards where card_no.0 = 2005)"

当我尝试插入重复的 2005 时。是否可以显示哪个值不正确?提前致谢。

刀片

name="card_no[]"

控制器功能

public function store_card(Request $request)
{
   $this-> validate(request(),[ 
    "card_no.*" => 'required|max:255|unique:cards', 
    ]);


    $ent_date = date("Y-m-d");
    $card_no = $request->card_no;


    foreach($card_no as $value){ 
        $card = new card() ;
        $card->card_no = $value;
        $card->ent_date = $ent_date;
        $card->flag = '1';
        $card->save();
                  }

    return redirect('card');
}

【问题讨论】:

    标签: laravel-5 laravel-5.3


    【解决方案1】:

    你必须为唯一规则提供一个列名,如果你不这样做,Laravel 将自己添加输入名称。 你可以参考 Laravel 文档here。 要解决此问题,请将规则更改为以下内容:

    "card_no.*" => 'required|max:255|unique:cards,card_no'

    【讨论】:

    • 它可以工作但不显示消息。我的视图代码@if($errors->has('card_no'))

      错误

      @endif
    • 哦,我修复了 @if($errors->has('card_no.*')) 非常感谢。
    • 我的第二部分是,是否可以显示哪个值不正确?
    • 是的,card_no.* 中的 * 应该为您提供索引。
    • 不允许重复卡号 {{ $errors->first('card_no.*') }}
    猜你喜欢
    • 2018-10-09
    • 2018-11-05
    • 2017-12-17
    • 2017-11-06
    • 2018-06-08
    • 1970-01-01
    • 2018-04-24
    • 2016-07-31
    • 1970-01-01
    相关资源
    最近更新 更多