入门
安装软件包,定义 Eloquent 查询和 Feed 项结构,然后生成 Feed 文件。在现有 Laravel 应用中,创建首个可用导出大约需要五分钟。
前置条件
- PHP
8.2或 Composer 接受的更高8.x版本 - Laravel
11.x、12.x或13.x - 已配置的数据库和文件系统磁盘
安装与准备
composer require dragon-code/laravel-feeds
php artisan vendor:publish --tag="feeds"
php artisan migrate
php artisan make:feed User --item
生成器会创建 Feed 类和 Feed 项类,还会创建用于注册 Feed 的数据库变更。如果该迁移是在前面的 migrate 命令之后生成的,请在首次生成前运行它。
定义数据源
使用 Eloquent 构建器,以便分块读取记录。
namespace App\Feeds;
use App\Feeds\Items\UserFeedItem;
use App\Models\User;
use DragonCode\LaravelFeed\Feeds\Feed;
use DragonCode\LaravelFeed\Feeds\Items\FeedItem;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
class UserFeed extends Feed
{
public function builder(): Builder
{
return User::query()
->whereNotNull('email_verified_at')
->where('created_at', '>', now()->subYear());
}
public function item(Model $model): FeedItem
{
return new UserFeedItem($model);
}
}
定义每个 Feed 项
namespace App\Feeds\Items;
use DragonCode\LaravelFeed\Feeds\Items\FeedItem;
/** @property-read \App\Models\User $model */
class UserFeedItem extends FeedItem
{
public function toArray(): array
{
return [
'name' => $this->model->name,
'email' => $this->model->email,
];
}
}
生成文件
php artisan feed:generate
命令会显示每个 Feed 的状态;普通控制台输出不包含生成文件的路径。Feed 类默认使用 XML 格式和 public 磁盘。请在 Feed 类中修改相应值。