我有以下代码:
$data = DataObject::get('Property',"SoftDelete=0 AND Bedrooms >= ".$minBeds." AND Price<='". $maxPrice."'","Price ASC");
$f1 = new JSONDataFormatter();
return $f1->convertDataObjectSet($data);
然而,答案是:
{"totalSize":null,"items":[]}
DataObject中肯定有记录,就好像我一样:
$data = DataObject::get('Property',"SoftDelete=0 AND Bedrooms >= ".$minBeds." AND Price<='". $maxPrice."'","Price ASC");
foreach($data as $dataobj){
print_r($data);
}
我可以看到所有记录的数据。
答案 0 :(得分:1)
在迭代之前,ORM实际上并不执行查询,这解释了为什么在使用foreach循环$data
时存在结果,而不是仅仅编写get(...)
语句。
解决方案是在DataList上使用toArray()
方法然后执行查询,您将在数组中得到结果:
$data = DataObject::get('Property',"SoftDelete=0 AND Bedrooms >= ".$minBeds." AND Price<='". $maxPrice."'","Price ASC")->toArray();
(请注意,这可能/会引发错误,因为没有结果,因此可能需要首先检查->count()
)
convertDataObjectSet()
似乎将SS_List
作为参数,因此您可能需要像$data
一样转换$data = ArrayList::create( $data )
(不确定)。