Intereting Posts
Как разбирать csv в PHP с многострочными данными в столбце Msgstr "Не удалось проверить файл php. Программа php не найдена " file_get_contents с включенной информацией о хешах Абстрактные константы в PHP. Заставьте дочерний класс определить константу Зачем использовать замыкание для назначения вместо прямого назначения значения ключу? MongoDB: ObjectId to String is_uploaded_file () Задает файл изображения, когда он .bmp, почему? Модели CodeIgniter: только для подключения к базе данных? загрузить файл с использованием FTP и php Каков наилучший способ записи большого файла на диск в PHP? Можно ли запустить функцию в переменной шаблона Silverstripe для форматирования вывода? Насколько безопасна функция Php PDO: lastInsertId? Как отсортировать все уровни многомерного массива по ключу? Установите php-mcrypt на CentOS 6 Как использовать order_id как номер счета-фактуры и конвертировать любую переменную в качестве gloabal

Как удалить определенные поля из всех объектов набора записей в литии?

Я использую MySQL в качестве адаптера подключения базы данных для всех своих моделей. У меня есть модель загрузки и контроллер с функцией индекса, которая отображает либо таблицу HTML либо файл CSV зависимости от типа, переданного из запроса. У меня также есть тип медиа CSV для обработки массива данных, который работает как ожидалось (выводит ключи массива в виде заголовков, а затем значения массива для каждой строки данных).

Я хочу сделать тот же запрос на поиск, но затем удалить поля ID из набора записей, если CSV файл будет отображаться. Вы заметите, что идентификатор загрузки извлекается, даже если он не находится в массиве полей, поэтому простое изменение массива полей на основе типа запроса не будет работать.

Я пробовал следующее в действии индекса моего контроллера загрузки:

 <?php namespace app\controllers; use app\models\Downloads; class DownloadsController extends \lithium\action\Controller { public function index() { // Dynamic conditions $conditions = array(...); $downloads = Downloads::find('all', array( 'fields' => array('user_id', 'Surveys.name'), 'conditions' => $conditions, 'with' => 'Surveys', 'order' => array('created' => 'desc') )); if ($this->request->params['type'] == 'csv') { $downloads->each(function ($download) { // THIS DOES NOT WORK unset($download->id, $download->user_id); // I HAVE TRIED THIS HERE AND THE ID FIELDS STILL EXIST // var_dump($download->data()); // exit; return $download; }); return $this->render(array('csv' => $downloads->to('array'))); } return compact('downloads'); } } ?> 

Я думал, что на __unset() есть __unset() который вызывается, когда вы вызываете стандартную функцию PHP unset() в поле объекта.

Было бы здорово, если бы была $recordSet->removeField('field') , но я не могу ее найти.

Любая помощь будет принята с благодарностью.