← Попередня · Назад до README · Наступна →
Створення фідів
Щоб створити клас фіду, скористайтеся консольною командою make:feed:
php artisan make:feed <name>
Команда створить файл фіду, наприклад app/Feeds/UserFeed.php.
Ця консольна команда також може створити разом із класом фіду класи елемента та інформації. Для цього використовуйте параметри --item і --info.
# Create a feed class and info class
php artisan make:feed <name> --info
# Create a feed class and item class
php artisan make:feed <name> --item
# Create a feed class, item class, and info class
php artisan make:feed <name> --item --info
Також доступні скорочені параметри:
# Create a feed class and item class
php artisan make:feed <name> -t
# Create a feed class and info class
php artisan make:feed <name> -i
# Create a feed class, item class, and info class
php artisan make:feed <name> -it
Під час створення фіду також буде створено операцію або міграцію для його додавання до бази даних.
Якщо проєкт використовує Laravel Deploy Operations, буде створено клас операції; інакше — клас міграції.
Це потрібно для додавання інформації про фід до бази даних і керування нею.
Наповнення фідів
Фід
Наповніть основний клас фіду. Наприклад:
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);
}
}
Елемент фіду
Наповніть клас елемента фіду. Наприклад:
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,
];
}
}
Необов’язкові значення
Щоб пропустити поле, коли його значення недоступне, поверніть екземпляр DragonCode\LaravelFeed\Data\OptionalData як значення цього поля:
namespace App\Feeds\Items;
use DragonCode\LaravelFeed\Data\OptionalData;
use DragonCode\LaravelFeed\Feeds\Items\FeedItem;
class UserFeedItem extends FeedItem
{
public function toArray(): array
{
return [
'id' => $this->model->id,
'name' => $this->model->name,
'cityId' => $this->model->city?->id ?? new OptionalData,
'createdAt' => $this->model->created_at,
'updatedAt' => $this->model->updated_at ?? new OptionalData,
];
}
}
Необов’язкові поля видаляються з об’єктів JSON і JSON Lines, а також з елементів XML і RSS, зокрема зі звичайних вкладених полів. CSV зберігає позицію стовпця та записує порожнє поле.
Якщо застосунок використовує Spatie Laravel Data, натомість можна повернути Spatie\LaravelData\Optional. Обидва класи необов’язкових значень обробляються автоматично.
use Spatie\LaravelData\Optional;
'updatedAt' => $this->model->updated_at ?? Optional::create(),
Окремі вихідні файли
Генерування окремих файлів для різних бізнес-умов — це розширений сценарій виведення. Прочитайте посібник з окремих вихідних файлів, а потім скористайтеся прикладом «Кілька цільових файлів фіду».
Формат файлу
Список доступних форматів наведено на сторінці підтримуваних форматів.
Фіди можна генерувати в різних форматах. Клас фіду можна правильно експортувати лише у формат, для якого його призначено. Це пов’язано з використанням директив та іншими особливостями форматів.
Щоб застосувати потрібний формат, перевизначте властивість $format у класі фіду:
namespace App\Feeds;
use DragonCode\LaravelFeed\Enums\FeedFormatEnum;
use DragonCode\LaravelFeed\Feeds\Feed;
use Illuminate\Database\Eloquent\Builder;
class UserFeed extends Feed
{
protected FeedFormatEnum $format = FeedFormatEnum::Json;
public function builder(): Builder
{
//
}
}

