オブジェクト「mitglied」を .csv ファイルにエクスポートしたいと考えています。私のコントローラーは次のようになります。
public function exportAction() {
// find all mitglieds
$records = $this->mitgliedRepository->findTennis();
// Set path for export-file
$csvPath = '/var/www/apps/flow/Packages/Application/ITOOP.Atc/Resources/Private/Export/test.csv';
$fp = fopen($csvPath, 'w');
foreach ($records as $lines) {
fputcsv($fp, $lines);
}
fclose($fp);
}
exportAction を呼び出すと、エラーが発生します。
#1: 警告: fputcsv() は、パラメーター 2 が配列であると想定し、オブジェクトは /var/www/apps/flow/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/itoop_atc_Controller_MitgliedController.php 行 494 で指定されます
494行目は…
fputcsv($fp, $lines);
...だから、「mitglied」オブジェクトを配列に変換する必要があると思います。
findTennis
私のmitgliedRepositoryのパブリック関数は次のようになります。
public function findTennis() {
$query = $this->createQuery();
$result = $query->matching($query->equals('abteilung', 'Tennis'))
->setOrderings(array('name' => \TYPO3\Flow\Persistence\QueryInterface::ORDER_ASCENDING))
->execute();
return $result;
}
toArray(); を設定しようとしました。そのようなリポジトリで:
public function findTennis() {
$query = $this->createQuery();
$result = $query->matching($query->equals('abteilung', 'Tennis'))
->setOrderings(array('name' => \TYPO3\Flow\Persistence\QueryInterface::ORDER_ASCENDING))
->execute()
->toArray;
return $result;
}
しかし、次のエラーが表示されます。
#1: 注意: 未定義のプロパティ: TYPO3\Flow\Persistence\Doctrine\QueryResult::$toArray in /var/www/apps/flow/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/itoop_atc_Domain_Repository_MitgliedRepository.php 105 行目
もちろん105行目は
->toArray;
フロー内でオブジェクトを配列に変換する方法を知っている人はいますか?
次の例ではエクスポートが機能するため、(のフォーマット) リポジトリ クエリが問題であると思います。
public function exportAction() {
// Set path for export-file
$csvPath = '/var/www/apps/flow/Packages/Application/ITOOP.Atc/Resources/Private/Export/test.csv';
$test = array (
array('xxx', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('aaa', 'bbb')
);
$fp = fopen($csvPath, 'w');
foreach ($test as $lines) {
fputcsv($fp, $lines);
}
fclose($fp);
}
正しい方向に向けてください。ありがとうございました!