Intereting Posts
Получение геолокации с IP-адреса Создание и добавление файлов журнала PHP В файл под папкой внутри S3 Bucket PHP SQL: как сохранить данные в несколько баз данных из одной формы html или как автоматически копировать данные из одной базы данных в другую базу данных Что лучше по производительности: двойные кавычки с переменными или одинарные кавычки с конкатенациями? Как форматировать числа с 00 префиксами в php? Определить кодировку base64 в PHP? Как передать массив строк в PDO для их вставки? Что может вызвать прерывистый SQLSTATE Нет таких ошибок файла или каталога из php PDO mysql в Debian Lenny? Отправка ASA Amazon с моего PHP-сервера Сортировка подкачки в Cakephp 3.x Самый простой способ передачи данных между php и android Symfony2: вводить текущего пользователя в службу Шаблон проектирования для кэширования кэшированных данных Временные метки Laravel для отображения миллисекунд отправлять электронную почту, используя php

Как изменить пустую строку на нуль, используя Laravel 5.1?

При использовании Laravel 5.1 я пытаюсь проверить каждое значение до его сохранения в базе данных с помощью Eloquent ORM. Моя логика заключается в том, что сначала выровняйте значение, если значение представляет собой пустую строку "" , а затем преобразует ее в null вместо пустой строки.

Мне было рекомендовано создать Trait, который будет переопределять метод setAttribute для этого.

Итак, вот что я сделал

У меня есть новая папка «app \ Traits» внутри файла TrimScalarValues.php который содержит следующий код

 <?php namespace App\Traits; trait TrimScalarValues { public function setAttribute($key, $value) { if (is_scalar($value)) { $value = $this->emptyStringToNull(trim($value)); } return $this->setAttribute($key, $value); } /** * return null value if the string is empty otherwise it returns what every the value is * */ private function emptyStringToNull($string) { //trim every value $string = trim($string); if ($string === ''){ return null; } return $string; } } 

Наконец, у меня есть файл app\Models\Account.php который содержит следующий код

 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use App\Models\industry; use App\Traits\RecordSignature; use App\Traits\TrimScalarValues; class Account extends Model { use RecordSignature, TrimScalarValues; /** * The database table used by the model. * * @var string */ protected $table = 'accounts'; protected $primaryKey = 'account_id'; const CREATED_AT = 'created_on'; const UPDATED_AT = 'modified_on'; const REMOVED_AT = 'purged_on'; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = ['client_id','account_name', 'company_code', 'legal_name', 'created_by','modified_by','instrucations']; /** * The attributes excluded from the model's JSON form. * * @var array */ //protected $hidden = ['account_id', 'remember_token']; protected $guarded = ['account_id']; /** * Get the industry record associated with the account. */ public function industry() { return $this->hasOne(industry, industry::primaryKey); } public function pk(){ return $this->primaryKey; } } 

Но каждый раз, когда я обновляю значение, я получаю белую страницу без ошибок или журналов.

Когда я use RecordSignature, TrimScalarValues; app\Models\Account.php и меняю use RecordSignature, TrimScalarValues; use RecordSignature; то я не получаю белую страницу, но, очевидно, значения не обрезаются и не преобразуются в нуль.

Что я здесь делаю неправильно?

Related of "Как изменить пустую строку на нуль, используя Laravel 5.1?"