跳到主要内容

入门

安装软件包,定义 Eloquent 查询和 Feed 项结构,然后生成 Feed 文件。在现有 Laravel 应用中,创建首个可用导出大约需要五分钟。

前置条件

  • PHP 8.2 或 Composer 接受的更高 8.x 版本
  • Laravel 11.x12.x13.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 类中修改相应值。

后续步骤