Intereting Posts
Удалить числовой префикс из строки – PHP regex Вычисление общего количества часов из базы данных Как я могу получить доступ к нескольким индивидуальным ответам reCAPTCHA с одной и той же страницы? mysql update query для установки поля с идентификатором другой таблицы PHP fopen () Предел перенаправления достигнут Файл htaccess для времени сеанса PHP Обновление содержимого div после отправки формы без перезагрузки страницы Как разрешить пользователям с необходимым разрешением загружать файл через php? Как получить миниатюру из базы данных wordpress на внешнюю страницу Как закрыть файл excel в php-excel-reader Получение списка файлов по FTP PHP echoing jpeg image терпит неудачу, но запись того же изображения в файл отлично работает. Зачем? Как получить текущий уровень рекурсии в функции PHP Как я могу эмулировать WHERE 1 в динамическом запросе? Как получить последние 7 дней с помощью PHP

Пропустить модельный аксессуар

У меня есть модель под названием Run, которая содержит этот метод:

public function getNameAttribute($name){ if($name == 'Eendaags') return $this->race_edition->race->name; return $this->race_edition->race->name.' '.$name; } 

Мне нужна эта настройка для администратора laravel, так как много прогонов будет иметь одно и то же имя, и единственное отличие – название гонки. Но в одном месте на сайте мне нужно получить только имя, без мутирования. Это возможно?

это правильный путь

 // that skips mutators $model->getOriginal('name'); 

https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Model.html#method_getOriginal

Редактировать: Осторожно!

Как объяснил Максим Чернян в комментариях, getOriginal() не просто пропускает мутаторы, но также возвращает «исходное» значение поля во время чтения объекта из базы данных. Поэтому, если вы с тех пор изменили свойство модели, это не вернет ваше измененное значение, оно все равно вернет исходное значение. Более последовательный и надежный способ получить не-мутированное значение из класса модели состоит в том, чтобы извлечь его из свойства attributes следующим образом:

 $this->attributes['name'] 

Но имейте в виду, что attributes являются защищенным свойством, поэтому вы не можете делать это за пределами класса модели. В этом случае вы можете использовать

 $model->getAttributes()['name']` 

или техника Максима из его комментария ниже.

У меня возникла проблема с аксессуарами Eloquent и привязкой модели модели – путем форматирования целого числа с помощью money_format значение больше не загружалось в поле ввода номера формы.

Обходной путь, который я использую, заключается в создании аксессора с другим именем:

 public function getRevenueDollarsAttribute($value) { return money_format('$%i', $this->revenue); } 

Это предоставляет мне аксессор, не затрагивая привязку модели модели.