Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
如何在Laravel中的两个类之间传递变量_Laravel_Laravel 6 - Fatal编程技术网

如何在Laravel中的两个类之间传递变量

如何在Laravel中的两个类之间传递变量,laravel,laravel-6,Laravel,Laravel 6,我有一个类来定义从xlsx文件导入数据库的新闻表。 App\Imports\newsimort.php <?php namespace App\Imports; use App\News; use Illuminate\Support\Facades\DB; use Illuminate\Support\Collection; use Maatwebsite\Excel\Concerns\ToCollection; use Maatwebsite\Excel\Concerns\WithH

我有一个类来定义从xlsx文件导入数据库的新闻表。 App\Imports\newsimort.php

<?php
namespace App\Imports;

use App\News;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;

class NewsImport implements ToCollection, WithHeadingRow
{
    public function collection(Collection $rows)
    {
        News::truncate();
        foreach ($rows as $row) 
        { 
            News::create([
               'title'      => $row['title'], 
               'fulltext'   => $row['fulltext'], 
            ]);
        }
      return $newsimported = $rows->count();
    }
}
<?php
namespace App\Admin\Controllers;

use App\Http\Controllers\Controller;
use Encore\Admin\Controllers\Dashboard;
use Encore\Admin\Layout\Column;
use Encore\Admin\Layout\Content;
use Encore\Admin\Layout\Row;
use App\Imports\NewsImport;
use Maatwebsite\Excel\Facades\Excel;

class SeedController extends Controller
{
    public function index(Content $content)
    {
        Excel::import(new NewsImport,       'import/news.xlsm');
        return $content
            ->title('Import & Export')
            ->description('Laravel excel');
    }

}
代码正在运行,但我想在种子页面上显示导入了多少新闻。 但是我不知道如何在SeedController index函数中使用$newscomported
有什么想法吗?

在不查看Excel库的实现细节的情况下,您可以尝试向已创建的导入类添加一个成员变量,然后在运行
Excel::Import(…)
后检查:

class NewsImport implements ToCollection, WithHeadingRow
{
    public $rowCount = null;

    public function collection(Collection $rows)
    {
        News::truncate();
        foreach ($rows as $row) 
        { 
            News::create([
               'title'      => $row['title'], 
               'fulltext'   => $row['fulltext'], 
            ]);
        }

        $this->rowCount = $rows->count();
    }
}
然后在运行Excel::import(…)的位置:

class NewsImport implements ToCollection, WithHeadingRow
{
    public $rowCount = null;

    public function collection(Collection $rows)
    {
        News::truncate();
        foreach ($rows as $row) 
        { 
            News::create([
               'title'      => $row['title'], 
               'fulltext'   => $row['fulltext'], 
            ]);
        }

        $this->rowCount = $rows->count();
    }
}
public function index(Content $content)
{
    Excel::import($import = new NewsImport, 'import/news.xlsm');

    $rowCount = $import->rowCount;

    ...    
}