在控制器 SilverStripe 中使用 ORM

Using The ORM in controller SilverStripe

我有以下布局:

mypage.ss

$CreateString
<% loop $LatestString %>
    <div>$StringVar</div>
<% end_loop>

mypage.php

class MyPage extends Page {

    private static $db = array(
        'StringVar' => 'Varchar'
    );
}

class MyPage_Controller extends Page_Controller {

    public function CreateString() { 
        $varS = MyPage::create(array('StringVar' => 'Jonh Davies')); 
        $varS = MyPage::write(); 
        return $varS;
    }

    public function LatestString() { 
        return MyPage::get()
            ->sort('Created', 'DESC')
            ->limit(1);
    } 
}

事情是什么都没有创建,现在控制器有输出。没有创建记录,也没有输出。

在上面的示例中,MyPage 未发布。您的 CreateString 方法应该更像:

$varS = MyPage::create(...);
$varS->write();
$varS->publish('Stage', 'Live');
return $varS;

我什至不确定 "MyPage::write" 会做什么,但它可能甚至不会在暂存 table 开始时保存记录。我有点惊讶没有产生错误。