【发布时间】:2021-12-05 23:38:52
【问题描述】:
我是 SilverStripe 的新手,我想使用 SilverStripe 函数执行一个简单的查询(我不想使用原始 SQL)。我想获取产品表的所有列的名称。 到目前为止,我在 SilverStripe 文档中没有发现任何有用的信息。我很感激任何建议。
【问题讨论】:
标签: silverstripe
我是 SilverStripe 的新手,我想使用 SilverStripe 函数执行一个简单的查询(我不想使用原始 SQL)。我想获取产品表的所有列的名称。 到目前为止,我在 SilverStripe 文档中没有发现任何有用的信息。我很感激任何建议。
【问题讨论】:
标签: silverstripe
您必须了解 Silverstripe $db(数据模型/ORM)和数据库列并不总是同步的。如果删除 $db 属性,该列仍将存在于您的数据库中,但不再存在于您的 ORM 中。 Source
假设你想要当前的 ORM 属性,你可以简单地使用一个 Dataobject $record:
$attributes = $record->toMap();
使用模式可以收集更多的属性(甚至是继承的属性):
$schema = \SilverStripe\ORM\DataObject::getSchema();
$allFields = $schema->fieldSpecs($record);
$columns = array_keys($allFields);
【讨论】: