SilverStripe 一次性查询所有 DataObject table
SilverStripe querying all the DataObject table in one go
我正在使用 SilverStripe CMS 开发一个网站。我在查询数据对象时遇到了一点问题。我正在尝试按如下方式一次性获取所有数据对象以优化性能:
DataObject::get();
调用此方法时出现以下错误:
[Emergency] Uncaught InvalidArgumentException: Call ::get() instead of DataObject::get()
如果可以查询的话,我想再做这样的操作:
DataObject::get()->filterAny([ 'ClassName' => 'ClassName' ]);
我也尝试过使用以下查询:
$sqlQuery = new SQLQuery();
$sqlQuery->setFrom('Player');
但问题是我不知道全局/父 table 名称 DataObject 的名称是什么。
是否可以在 SilverStripe 中完成我想做的事情,如果可以,怎么做?
我们无法调用 DataObject::get()
来一次检索所有 DataObjects
。 DataObject
本身没有数据库table,因此无法查询。
我们无法在一次查询中获取所有自定义数据对象。
我们可以通过调用 Sitetree::get()
.
在一次查询中获取所有 页
如果我们希望能够在一个查询中获取所有我们自己的自定义 DataObjects
,我们需要首先创建一个 BaseObject
并让我们所有的自定义 DataObjects
扩展 BaseObject
.
BaseObject
use SilverStripe\ORM\DataObject;
class BaseObject extends DataObject
{
}
其他定制类
class ExampleObject extends BaseObject
{
}
class AnotherExampleObject extends BaseObject
{
}
然后我们可以调用 BaseObject::get()
来获取我们所有的自定义对象并调用 SiteTree::get()
来获取我们所有的页面。
请注意,这仍然不会在任何已安装的模块(包括 SilverStripe 核心)中定义任何 DataObjects
。这包括 Member
、File
、SiteConfig
等。这些将始终需要通过自己的 get()
请求进行检索。
我正在使用 SilverStripe CMS 开发一个网站。我在查询数据对象时遇到了一点问题。我正在尝试按如下方式一次性获取所有数据对象以优化性能:
DataObject::get();
调用此方法时出现以下错误:
[Emergency] Uncaught InvalidArgumentException: Call ::get() instead of DataObject::get()
如果可以查询的话,我想再做这样的操作:
DataObject::get()->filterAny([ 'ClassName' => 'ClassName' ]);
我也尝试过使用以下查询:
$sqlQuery = new SQLQuery();
$sqlQuery->setFrom('Player');
但问题是我不知道全局/父 table 名称 DataObject 的名称是什么。
是否可以在 SilverStripe 中完成我想做的事情,如果可以,怎么做?
我们无法调用 DataObject::get()
来一次检索所有 DataObjects
。 DataObject
本身没有数据库table,因此无法查询。
我们无法在一次查询中获取所有自定义数据对象。
我们可以通过调用 Sitetree::get()
.
如果我们希望能够在一个查询中获取所有我们自己的自定义 DataObjects
,我们需要首先创建一个 BaseObject
并让我们所有的自定义 DataObjects
扩展 BaseObject
.
BaseObject
use SilverStripe\ORM\DataObject;
class BaseObject extends DataObject
{
}
其他定制类
class ExampleObject extends BaseObject
{
}
class AnotherExampleObject extends BaseObject
{
}
然后我们可以调用 BaseObject::get()
来获取我们所有的自定义对象并调用 SiteTree::get()
来获取我们所有的页面。
请注意,这仍然不会在任何已安装的模块(包括 SilverStripe 核心)中定义任何 DataObjects
。这包括 Member
、File
、SiteConfig
等。这些将始终需要通过自己的 get()
请求进行检索。