Я использую 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')
, но я не могу ее найти.
Любая помощь будет принята с благодарностью.