Під час роботи з моделями Eloquent іноді потрібні лише основні атрибути бази даних, без зв'язків або обчислених властивостей. Метод attributesToArray у Laravel надає зручний спосіб доступу до цих сирих даних моделі.
// Основне використання
$user = User::first();
$attributes = $user->attributesToArray();
// Повертає сирі атрибути бази даних
// ['id' => 1, 'name' => 'John', 'email' => 'john@example.com']
Розглянемо практичний приклад реалізації системи аудиту змін моделі:
<?php
namespace App\Models;
use App\Models\AuditLog;
use Illuminate\Database\Eloquent\Model;
class AuditableModel extends Model
{
protected static function booted()
{
static::updated(function ($model) {
$original = $model->getOriginal();
$current = $model->attributesToArray();
// Порівнюємо лише фактичні атрибути бази даних
$changes = array_diff($current, $original);
if (!empty($changes)) {
AuditLog::create([
'model_type' => get_class($model),
'model_id' => $model->id,
'original' => json_encode($original),
'changes' => json_encode($changes),
'user_id' => auth()->id(),
'timestamp' => now()
]);
}
});
}
}
class Product extends AuditableModel
{
protected $appends = ['formatted_price', 'stock_status'];
public function category()
{
return $this->belongsTo(Category::class);
}
public function getFormattedPriceAttribute()
{
return "$" . number_format($this->price / 100, 2);
}
}
Метод attributesToArray забезпечує прямий доступ до атрибутів моделі, як вони зберігаються в базі даних, що робить його ідеальним для ситуацій, коли вам потрібні сирі дані без додаткових обчислених властивостей або зв'язків
Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше
Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення