【问题标题】:LARAVEL 5 : Validate JSON data for uniqueness before saving in databaseLARAVEL 5:在保存到数据库之前验证 JSON 数据的唯一性
【发布时间】:2015-06-16 23:06:09
【问题描述】:

我对 Laravel 还很陌生。

我正在尝试以 JSON 格式从远程位置获取一些用户数据。这是我的控制器中用于获取 JSON 数据的代码。

public function fetch()
{       
    $url = 'http://example.com'; //fetching data as JSON
    $json = json_decode(file_get_contents($url), true);
    $this->save($json);
}

我有一个对应于我的用户表的用户模型类。 email 和 phone 列在数据库表中设置为唯一的。

class User extends Model {

    protected $fillable = [
        'name',
        'email',
        'phone'
    ];  

}

同一个Controller中的保存功能

private function save($json)
{
   foreach ($json as $key => $value) 
   {
      $user = User::create([                
         'name'     =>  $value['name'],
         'email'    =>  $value['email'],
         'phone'    =>  $value['phone']
     ]);
   }
} 

只要电子邮件和电话是唯一的,保存就可以正常工作。如果没有,它会抛出一个讨厌的 QueryException

SQLSTATE[23000]:违反完整性约束:1062 Duplicate entry...

有没有办法在尝试保存到数据库之前验证数据的唯一性?

【问题讨论】:

    标签: php json laravel-5 laravel-validation


    【解决方案1】:

    我认为我的回答会帮助其他追随者enter image description here 如果您使用它,在类验证表单请求中 您可以将函数用作回调函数 在 Laravel 表单请求 像那样 您还可以验证 json 值的唯一性

    参见链接图像中的示例,它很容易检查数据库中的验证 json 唯一性

    【讨论】:

    • 请将代码和数据添加为文本 (using code formatting),而不是图像。图片:A)不允许我们复制粘贴代码/错误/数据进行测试; B) 不允许根据代码/错误/数据内容进行搜索;和many more reasons。除了代码格式的文本之外,只有在图像添加了一些重要的东西,而不仅仅是文本代码/错误/数据传达的内容时,才应该使用图像。
    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    【解决方案2】:

    使用 Validator 类解决了here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-12
      • 2013-06-03
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 2015-10-12
      相关资源
      最近更新 更多