Intereting Posts
Почему мой конструктор все еще звонит, даже если случай класса и конструктора отличается? Как получить строку из HTML с регулярным выражением? MySQL: обновление всех строк, задающих поле, до 0, но установка поля одной строки в 1 Флажок с массивом внутри цикла False Результат? Проблема установки PHP pthreads на сервере Ubuntu Dropzone.js удалить кнопку с php PHPUnit: возможен вывод CLI во время тестовой отладки? Что быстрее; включая другой файл или запрос базы данных MySQL в PHP? Почему файл может быть частично загружен? Как использовать функции готовности печати в библиотеке PHPExcel как решить проблему curlexception 6: ошибка поиска имени тайм-аут в facebook new graph api массив от php до JavaScript nginx clean url с дружественными именами файлов seo Принимая скриншот веб-сайта, серверный сервер на арендованном Linux сервере, бесплатно PHP проверяет, является ли переменная целым числом

проблемы с laravel с мутаторами

Мое путешествие в laravel 4 (от laravel 3) продолжается ….

У меня есть модель статьи, доступ к таблице, называемой статьями.

Я создал модель с помощью следующих мутаторов:

class Article extends Eloquent { public function getArticleDateAttribute($value) { return date('d/m/Y', strtotime($value)); } public function getValidUntilAttribute($value) { return date('d/m/Y', strtotime($value)); } } 

Теперь, когда я запрашиваю базу данных со следующим И удаляет мутаторы, все работает так, как ожидалось, и я получаю ожидаемые данные:

 public function getTest() { $data = Article::select(array( 'articles.id', 'articles.article_date', 'articles.image_link', 'articles.headline', 'articles.category' )) ->get() ->toArray(); var_dump($data); //return View::make('_layouts.master'); } 

В моем тесте я получаю результаты, как ожидалось, как этот образец:

 array (size=5) 'id' => int 3 'article_date' => string '2008-06-03 00:00:00' (length=19) 'image_link' => string '' (length=0) 'headline' => string 'Sussex Amateur Course Closure' (length=29) 'category' => int 6 

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

 array (size=6) 'article_date' => string '03/06/2008' (length=10) 'valid_until' => string '01/01/1970' (length=10) 'id' => int 3 'image_link' => string '' (length=0) 'headline' => string 'Sussex Amateur Course Closure' (length=29) 'category' => int 6 

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

Не понял ли я это?

благодаря

луч

Мутаторы будут вызваны, потому что код построен таким образом. См. Реализацию этой функции в классе Eloquent Model (который вызывается toArray() ):

 /** * Convert the model's attributes to an array. * * @return array */ public function attributesToArray() { $attributes = $this->getAccessibleAttributes(); // We want to spin through all the mutated attributes for this model and call // the mutator for the attribute. We cache off every mutated attributes so // we don't have to constantly check on attributes that actually change. foreach ($this->getMutatedAttributes() as $key) { if ( ! array_key_exists($key, $attributes)) continue; $attributes[$key] = $this->mutateAttribute($key, $attributes[$key]); } return $attributes; } 

https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Eloquent/Model.php