如何避免将数据存储到Page表中

时间:2016-05-19 16:19:06

标签: silverstripe

根据我的经验,如果在创建新类时没有指定$ db,则该页面类型的所有数据都会进入Page&& SiteTree表。

我个人觉得这种行为非常混乱,没有任何组织,并且希望拥有自己拥有桌子的任何东西。

有没有办法明确设置一个新类,并使用自己的表,无论它是否通过$ db添加任何其他字段?

1 个答案:

答案 0 :(得分:3)

  

有没有办法明确设置一个新类,并使用自己的表,无论它是否通过$ db添加任何其他字段?

没有

一旦DataObject(其中SiteTree只是其子类)包含$db静态,则会创建一个具有相同名称的表,其中包含您定义的字段在$db

做任何不同的事情就是"打破SilverStripe"以及它如何使用其ORM。如果您创建DataList并转储其sql()方法的输出,则会看到Page的查询已加入SiteTree表。这样做实际上是 tidier ,因为您始终可以期望TitleContent(等)字段位于SiteTree表中以及您声明的任何自定义内容在PagePage子类中,位于各自的表中。

$sql = SiteTree::get()->filter('ClassName', 'Page')->sql();
var_dump($sql);