【问题标题】:How to get all the columns name of a DB table in SilverStripe如何在 SilverStripe 中获取数据库表的所有列名
【发布时间】:2021-12-05 23:38:52
【问题描述】:

我是 SilverStripe 的新手,我想使用 SilverStripe 函数执行一个简单的查询(我不想使用原始 SQL)。我想获取产品表的所有列的名称。 到目前为止,我在 SilverStripe 文档中没有发现任何有用的信息。我很感激任何建议。

【问题讨论】:

    标签: silverstripe


    【解决方案1】:

    您必须了解 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);
    

    【讨论】:

      猜你喜欢
      • 2016-08-08
      • 2011-02-16
      • 2011-09-07
      • 2011-11-17
      • 2013-03-01
      • 2011-04-30
      • 2011-02-17
      • 2016-05-13
      • 2016-08-14
      相关资源
      最近更新 更多