В разработке на Laravel работа с моделями — обычная задача. Однако в некоторых сценариях вам может потребоваться получить исходное имя модели без каких-либо изменений. В этой статье рассматриваются различные методы достижения этой цели, используя разговорный язык и приводятся примеры кода.
Метод 1: использование метода getOriginal
Laravel предоставляет полезный метод под названием getOriginal, который позволяет вам получить исходные атрибуты модели без каких-либо изменений, внесенных системой мутаций Laravel. Вот пример:
$user = User::find(1);
$originalName = $user->getOriginal('name');
Метод 2: доступ к базовой записи базы данных
Другой подход заключается в прямом доступе к базовой записи базы данных, связанной с моделью. Этот метод полностью обходит систему мутаций Laravel. Вот пример:
$user = User::find(1);
$originalName = $user->getRawOriginal('name');
Метод 3: запрос к базе данных
Если описанные выше методы не соответствуют вашим потребностям, вы можете выполнить необработанный запрос к базе данных, используя построитель запросов Laravel или необработанный SQL. Этот подход позволяет получить исходное имя непосредственно из таблицы базы данных:
$originalName = DB::table('users')->where('id', 1)->value('name');
Метод 4: реализация пользовательских методов доступа
Если у вас есть контроль над кодом модели, вы можете определить пользовательский метод доступа, который возвращает исходное имя. Переопределив метод getAttribute, вы можете обойти мутации. Вот пример:
class User extends Model
{
public function getAttribute($key)
{
if ($key === 'name') {
return $this->getOriginal('name');
}
return parent::getAttribute($key);
}
}
// Usage:
$user = User::find(1);
$originalName = $user->name;
В этой статье мы рассмотрели несколько методов получения исходного имени модели Laravel без каких-либо изменений. Эти методы варьируются от использования встроенных функций Laravel, таких как getOriginalи getRawOriginal, до прямых запросов к базе данных. Дополнительно мы обсудили вариант реализации пользовательских аксессоров для достижения желаемого результата. Используя эти методы, вы можете легко получить доступ к неизмененным атрибутам модели Laravel.