Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数据库播种器在Laravel中不工作_Php_Database_Laravel_Model - Fatal编程技术网

Php 数据库播种器在Laravel中不工作

Php 数据库播种器在Laravel中不工作,php,database,laravel,model,Php,Database,Laravel,Model,我的目标是根据每24小时更改一次的CSV文件填充我的数据库。这是我的理解,播种机将是完美的这一点,甚至可以被称为编程需要。我整合了基本代码并使用了他们网站上的文档,但是失败了,即使启用了调试,错误消息也没有什么意义 我已经测试并确认了DB连接工作正常,并且注释掉了除“Truncate”行之外的所有种子代码,遗憾的是,这似乎都没有处理。如果我从路径中截断,它会工作,而从播种机的run()它不会 我如何修复或至少解决此问题 路线: Route::get('seed', function() {

我的目标是根据每24小时更改一次的CSV文件填充我的数据库。这是我的理解,播种机将是完美的这一点,甚至可以被称为编程需要。我整合了基本代码并使用了他们网站上的文档,但是失败了,即使启用了调试,错误消息也没有什么意义

我已经测试并确认了DB连接工作正常,并且注释掉了除“Truncate”行之外的所有种子代码,遗憾的是,这似乎都没有处理。如果我从路径中截断,它会工作,而从播种机的
run()
它不会

我如何修复或至少解决此问题

路线:

Route::get('seed', function()
{
    Artisan::call('db:seed');
});
播种机:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder
{
    public function run()
    {
        // Empty the 'PLAYERS' Table
        DB::table('players')->truncate();

        // Fetch the data from our CSV File
        $data = $this->seedFromCSV('export.csv', ',');

        foreach ($data as $player)
        {
            DB::table('players')->insert(
                [
                    'name' => $player['First Name'] . " " . $player['Last Name'],
                    'team' => '0',
                    'position' => '0',
                    'played' => $player['Played'],
                    'injury_status' => $player['Injury Indicator'],
                    'injury_type' => $player['Injury Details'],
                    'fd_salary' => $player['Salary'],
                    'fd_fppg' => $player['FPPG'],
                    'opponent' => '0'
                ]
            );
        }
    }

    private function seedFromCSV($filename, $deliminator = ",")
    {
        if(!file_exists($filename) || !is_readable($filename))
        {
            return FALSE;
        }

        $header = NULL;
        $data = array();

        if(($handle = fopen($filename, 'r')) !== FALSE)
        {
            while(($row = fgetcsv($handle, 1000, $deliminator)) !== FALSE)
            {
                if(!$header) {
                    $header = $row;
                } else {
                    $data[] = array_combine($header, $row);
                }
            }
            fclose($handle);
        }

        return $data;
    }

}

DatabaseSeeder类中缺少DB facade的导入

添加以下内容:

use Illuminate\Support\Facades\DB;

DatabaseSeeder类中缺少DB facade的导入

添加以下内容:

use Illuminate\Support\Facades\DB;

这是因为Laravel的播种机无法在生产环境中运行,从而导致超时。要解决此问题,可以将force参数作为true传递,并按预期完成

Artisan::call('db:seed', array('--class' => 'DatabaseSeeder', '--force' => true));

这是因为Laravel的播种机无法在生产环境中运行,从而导致超时。要解决此问题,可以将force参数作为true传递,并按预期完成

Artisan::call('db:seed', array('--class' => 'DatabaseSeeder', '--force' => true));

为什么必须调用特殊路径来为数据库种子?为什么不使用cli命令
php artisan db:seed
?我在共享主机上,Laravel是通过Softaculous安装的。我无法运行直接命令,因为我没有这样做的权限。为什么必须调用特殊路由来为数据库种子?为什么不使用cli命令
php artisan db:seed
?我在共享主机上,Laravel是通过Softaculous安装的。我无法运行直接命令,因为我没有这样做的权限。谢谢你的建议。但是我刚刚测试了它,它仍然会超时并显示相同的错误消息。有没有可能获得更多的关于什么导致它失败的详细信息?truncate现在应该可以工作了。。。可能脚本有时需要30秒以上才能运行,因此请尝试更改
php.ini
Hmm中的
max\u execution\u time
,该日志看起来与浏览器中显示的日志相同。我怀疑它需要更长的时间,实际上有1个DB条目,并且DB在本地主机上。从任何其他位置(如路由、控制器等)运行truncate()行都会立即完成。运行composer dump autoloadSo放弃后,我用shell_exec(“cd../laravel&&php artisan db:seed”)测试了CLI命令;这似乎将工作,但报告应用程序在生产中!命令取消!我需要将cd刻录到public_html下面的laravel目录或该消息是否与它为什么不能按编程方式工作有关?谢谢您的建议。但是我刚刚测试了它,它仍然会超时并显示相同的错误消息。有没有可能获得更多的关于什么导致它失败的详细信息?truncate现在应该可以工作了。。。可能脚本有时需要30秒以上才能运行,因此请尝试更改
php.ini
Hmm中的
max\u execution\u time
,该日志看起来与浏览器中显示的日志相同。我怀疑它需要更长的时间,实际上有1个DB条目,并且DB在本地主机上。从任何其他位置(如路由、控制器等)运行truncate()行都会立即完成。运行composer dump autoloadSo放弃后,我用shell_exec(“cd../laravel&&php artisan db:seed”)测试了CLI命令;这似乎将工作,但报告应用程序在生产中!命令取消!我需要将cd刻录到public_html下面的laravel目录或该消息是否与它为什么不能按编程方式工作有关?