我想要做一个选择所有从单个表中获取三列,然后简单地使用结果作为数组。没有一个循环的代价。Silverstripe 3.5 - 如何查询特定的列并返回一个数组
我已经尝试了本使用ORM方法:
DataObject::get('City')->sort('Name ASC')->toNestedArray();
这给了我一个完美的数组。但是我看不到只返回我想要的列的方法。它返回所有列。这是一个问题,因为我是json编码这个数组,数据包是它需要的3倍。
所以,我想这一点使用的SQLQuery来代替:
DB::query('SELECT "ID","Name","ParentID" FROM "City"');
现在,这可以让我选择三个字段,但据我所知,有没有方法可以返回该查询像toNestedArray数组()
高低搜索,但没有适合。有任何想法吗?
编辑:应该提到我已经尝试setQueriedColumns()抱歉。这似乎并不适合我在这里做的事情。
$cities = AspireCity::get()->sort(['Name' => 'ASC'])->setQueriedColumns(['ID', 'Name']);
Debug::dump($cities->toNestedArray());
输出:
Array
(
[0] => Array
(
[ClassName] => City
[LastEdited] => 2017-09-26 11:14:16
[Name] => Acacia Bay
[ID] => 70
[RecordClassName] => City
[Created] =>
[ParentID] => 9
)
[1] => Array
(
[ClassName] => City
[LastEdited] => 2017-09-26 11:14:16
[Name] => Ahaura
[ID] => 71
[RecordClassName] => City
[Created] =>
[ParentID] => 9
)
结帐http://api.silverstripe.org/en/3.1/class-DataList。html#_setQueriedColumns –
谢谢。我确实尝试过,但似乎没有按预期工作。请参阅编辑我的问题的细节。也许toNestedArray()忽略它? – Aaryn
我很确定,当使用ORM时,总是输出数据对象系统字段。这些是ClassName,LastEdited,ID,Created。 'setQueriedColumns'然后允许你选择你添加到你的数据对象模型的字段。如果你只需要字段ID,Name,ParentID,你将需要使用sql查询,就像你在下面的回答中所做的那样。 –