Artisan 迁移不会在控制器中 运行
Artisan migration won't run in controller
我有一个通过 API /users 填充的联系人数据库,它可以正常工作,将所有用户数据收集到 table。
我希望用户点击一个按钮并获得具有唯一值的更新联系人列表(phone 和电子邮件)
为此 我希望每当用户点击#getcontacts 按钮时运行一个migrate:refresh,这样它就会得到一个全新的联系人列表更新到最新的插页。
我仍然得到
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(实际上我不知道这是什么意思)
我该怎么做才能摆脱这个问题?我的错误在哪里?我真的不明白为什么它不会 运行 命令。语法似乎是正确的,谢谢你的帮助!!
感谢 lewis4u:https://whosebug.com/users/2502731/lewis4u
我使用了一个空数组作为 Artisan:call 函数的第二个参数,现在它工作得很好。
我有一个通过 API /users 填充的联系人数据库,它可以正常工作,将所有用户数据收集到 table。
我希望用户点击一个按钮并获得具有唯一值的更新联系人列表(phone 和电子邮件)
为此 我希望每当用户点击#getcontacts 按钮时运行一个migrate:refresh,这样它就会得到一个全新的联系人列表更新到最新的插页。
我仍然得到
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(实际上我不知道这是什么意思)
我该怎么做才能摆脱这个问题?我的错误在哪里?我真的不明白为什么它不会 运行 命令。语法似乎是正确的,谢谢你的帮助!!
感谢 lewis4u:https://whosebug.com/users/2502731/lewis4u
我使用了一个空数组作为 Artisan:call 函数的第二个参数,现在它工作得很好。