如何在Laravel中的两个类之间传递变量
我有一个类来定义从xlsx文件导入数据库的新闻表。 App\Imports\newsimort.php如何在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
<?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;
...
}