0
我有一個數據庫的聯繫人通過API /用戶填充,它能正確收集所有用戶數據到表中。Artisan遷移將不會在控制器中運行
我希望用戶打一個按鈕,得到具有獨特價值(電話和電子郵件),更新聯繫人列表
要做到這一點我想運行一個遷移:刷新每當用戶點擊按鈕#getcontacts,所以它得到一個全新的聯繫人列表更新到最新的插入。
我仍然得到
SQLSTATE [23000]:完整性約束違規:1062重複條目鍵 'contacts_email_unique'
use Artisan
[...]
public function makeContacts(){
$apiResponse = file_get_contents($this->userList); //call to the api URL
$users = json_decode(
$this->extractString($apiResponse,9,-1)
); //hard formatting response for my own purposes
Artisan::call('migrate:refresh', array('--path' => 'app/migrations', '--force' => true));
foreach ($users as $user){
$contact = new Contact();
$contact->firstname = $user->firstname;
$contact->lastname = $user->lastname;
$contact->email = $user->email;
$contact->phone = $user->phone;
foreach ($user->zones->zones as $zone){
$contact->zone = $zone->name;
}
$contact->save();
}
}
我注意到:
- 叫它在我的功能一開始不會改變任何東西
- 件刷新命令作品完美,如果從控制檯叫
- 傾銷結果給出了0(我不知道這是什麼意思,其實)
有什麼事要擺脫這個問題的?我的錯誤在哪裏?我真的不明白爲什麼它不會運行命令。語法似乎是正確的壽,謝謝你的幫助!
我想你可能會插入同一組電子郵件兩次,因此出現完整性約束錯誤的原因。你有一個重複的電子郵件條目。爲什麼不在插入之前檢查電子郵件是否存在? –
這就是要點!刷新應該清空我的數據庫每次用戶點擊按鈕來取得聯繫,而不是似乎刷新不會運行在所有 –
這是真的。嘗試運行php artisan migrate:從控制檯刷新並查看它是否有效。如果不是這樣,那也可能是由於你的mysql版本 –