【问题标题】:How can I seed data in Laravel from external data source?如何从外部数据源中播种 Laravel 中的数据?
【发布时间】:2016-11-10 21:55:24
【问题描述】:

因此,我尝试使用 Laravel 中的模型工厂将数据从外部 api 而非默认 faker 播种到我的 dB 中,但我被卡住了。以下是我的代码:

$factory->define(\App\Models\State::class, function(){
    $client = new Client();
    $stateQuery = $client->get('http://states-and-cities.com/api/v1/states');
    $states = $stateQuery->getBody();
    $states = json_decode($states, true);
    foreach ($states as $state) {
        return [
            'name' => $state['name'],
        ];
    }
});

所以发生的情况是,预期的回报是只播种一条记录,但我需要它来播种整个记录。我该如何解决这个问题?

【问题讨论】:

  • 您可以通过sql insert.running数组的for循环插入数据并插入每条记录。@FatimahSanni
  • 这很明显,因为您在第一次迭代中使用return 完成了整个方法(函数、代码块)。删除return 并将结果收集到缓冲区数组中。

标签: php laravel-5 guzzle laravel-seeding


【解决方案1】:

你可以试试:

$client = new Client();
$stateQuery = $client->get('http://states-and-cities.com/api/v1/states');
$states = $stateQuery->getBody();
$states = json_decode($states, true);
foreach ($states as $state) {
    \App\Models\State::create(['name' => $state['name']]);
}

【讨论】:

  • 是的,如果它只是播种器文件,那会起作用,但我想使用模型工厂,所以代码有点不同。
猜你喜欢
  • 2014-03-01
  • 1970-01-01
  • 2016-02-10
  • 2015-09-25
  • 2019-01-19
  • 2017-09-19
  • 2019-08-27
  • 1970-01-01
相关资源
最近更新 更多