← Попередня · Назад до README · Наступна →
Eloquent
Під час збереження моделі Str::slug(title) автоматично записується в slug через SlugCast. Використовується остаточне значення title після користувацьких сеттерів назви. Підтримуються користувацькі мутатори назви та saveQuietly(). Зміна назви змінює slug. Наприклад, Products перетворюється на products. Масові оновлення та вставки через Query Builder обходять збереження моделі; використовуйте методи моделі create(), update() або save().
Для вибору окремих фідів і запуску за розкладом задавайте назви з різними непорожніми slug. Фід із назвою, яка дає порожній slug, не можна вибрати. Якщо slug збігається в кількох невидалених реєстрацій, пошук викидає Illuminate\Database\MultipleRecordsFoundException; суфікси автоматично не додаються.
Власна модель реєстрації фіду
Установіть feeds.model у модель застосунку, якщо записам реєстрації фіду потрібні додаткові стовпці, перетворення типів, зв’язки або методи. Власна модель має успадковувати DragonCode\LaravelFeed\Models\Feed.
namespace App\Models;
use DragonCode\LaravelFeed\Models\Feed as BaseFeed;
class Feed extends BaseFeed
{
protected $fillable = [
'class',
'title',
'expression',
'is_active',
'last_activity',
'is_foo',
'is_bar',
];
protected function casts(): array
{
return [
...parent::casts(),
'is_foo' => 'boolean',
'is_bar' => 'boolean',
];
}
}
Зареєструйте модель у config/feeds.php:
'model' => App\Models\Feed::class,
Додайте власні стовпці до таблиці фідів у міграції застосунку. Усі атрибути, доступні для масового присвоєння, мають залишатися в $fillable.
FeedQuery використовує налаштовану модель для створення, пошуку, отримання списку, оновлення, видалення та відновлення. Під час створення запису передавайте значення застосунку через extra. Вони застосовуються останніми й можуть перевизначити аргументи методу:
$feed = app(FeedQuery::class)->create(
class: SomeFeed::class,
title: 'Some',
expression: '0 */12 * * *',
extra: [
'is_foo' => true,
'is_bar' => true,
]
);
Модель застосунку також може використовувати звичайний API Eloquent:
use App\Models\Feed;
$feed = Feed::create([
'class' => SomeFeed::class,
'title' => 'Some',
'expression' => '0 */12 * * *',
'is_active' => true,
'is_foo' => true,
'is_bar' => true,
]);
Налаштована модель визначається під час виконання. Статичний аналіз розглядає результат FeedQuery::create() як базову модель пакета. Якщо потрібне автодоповнення властивостей застосунку, використовуйте App\Models\Feed::create() або явний локальний тип.
Розмір блока
Запити до бази даних виконуються блоками, які типово містять 1000 елементів. Це значення можна змінити, перевизначивши метод chunkSize:
use DragonCode\LaravelFeed\Feeds\Feed;
class UserFeed extends Feed
{
public function chunkSize(): int
{
return 500;
}
}