2015-04-11 1 views
0

Я довольно новичок в Laravel.LARAVEL 5: Подтвердить данные JSON для уникальности перед сохранением в базе данных

Я пытаюсь извлечь некоторые данные пользователя из удаленного места в качестве JSON. Вот код в моем контроллере для получения данных JSON.

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

У меня есть модель User Model, соответствующая таблице моих пользователей. Столбцы электронной почты и телефона устанавливаются как уникальные в таблице базы данных.

class User extends Model { 

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

} 

Функция Сохранить в том же контроллере

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

спасброска отлично работает до тех пор, как электронная почта и телефон являются уникальными. Если нет, то он бросает неприятную QueryException

SQLSTATE [23000]: Integrity нарушение ограничения: 1062 Дублированный запись ...

Есть ли способ, чтобы проверить данные на уникальность, прежде чем пытаться сохранить в база данных?

ответ

1

Решено here с использованием класса Validator