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(); 

    }
}

我注意到:

  1. 在我的函数的开头调用它不会改变任何东西
  2. 如果从控制台调用刷新命令,则可以完美运行
  3. 转储结果为 0(实际上我不知道这是什么意思)

我该怎么做才能摆脱这个问题?我的错误在哪里?我真的不明白为什么它不会 运行 命令。语法似乎是正确的,谢谢你的帮助!!

感谢 lewis4u:https://whosebug.com/users/2502731/lewis4u

我使用了一个空数组作为 Artisan:call 函数的第二个参数,现在它工作得很好。