← Папярэдняя · Назад да 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
{
//
}
}

