Расширение моделей Laravel: пользовательские методы, области запросов и манипулирование атрибутами

  1. Пользовательские методы: вы можете определить свои собственные методы в классе модели для обработки определенных функций. Эти методы не предоставляются Laravel по умолчанию, но могут быть добавлены в соответствии с потребностями вашего приложения. Вот пример:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MyModel extends Model
{
    public function customMethod()
    {
        // Custom method logic here
    }
}
  1. Области запросов: Laravel позволяет определять области запросов внутри класса модели. Области предоставляют способ инкапсулировать ограничения многократного использования запроса. Вот пример:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MyModel extends Model
{
    public function scopeActive($query)
    {
        return $query->where('status', 'active');
    }
}

Это позволит вам использовать область activeв вашей модели:

$activeModels = MyModel::active()->get();
  1. Аксессоры и мутаторы: Laravel предоставляет аксессоры и мутаторы для управления атрибутами модели при получении или установке значений. Эти методы позволяют вам определять собственную логику для манипулирования атрибутами. Вот пример:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MyModel extends Model
{
    public function getPriceAttribute($value)
    {
        return '$' . number_format($value, 2);
    }
    public function setPriceAttribute($value)
    {
        $this->attributes['price'] = str_replace('$', '', $value);
    }
}

В этом примере метод доступа getPriceAttributeформатирует атрибут priceсо знаком доллара и двумя десятичными знаками при его получении, а setPriceAttributeмутатор удаляет знак доллара при установке атрибута.

Это всего лишь несколько примеров методов, которые можно добавить в модели Laravel для расширения их функциональности. Существует гораздо больше возможностей в зависимости от требований вашего приложения.