抱歉,如果这是一个简单的,我得到我的头在Silverstripe数据对象是如何工作的
我的任务是从我们网站上的wordpress博客(当前在/blog上)获取帖子列表,并在页脚显示最近的帖子,在另一种情况下,显示某些编辑在其页面上的帖子。
我已经看到了手册页的SqlQuery,但每当我尝试从它得到一个错误。我使用的代码是基于示例的,看起来像这样:
$sqlQuery = new SQLQuery();
$sqlQuery->select = array(
'post_title',
'post_content',
'post_name'
);
$sqlQuery->from = array("
wp_posts
");
$sqlQuery->where = array("
post_status = 'publish'
");
$sqlQuery->orderby = "
post_date DESC
";
// $sqlQuery->groupby = "";
// $sqlQuery->having = "";
// $sqlQuery->limit = "";
// $sqlQuery->distinct = true;
// get the raw SQL
$rawSQL = $sqlQuery->sql();
// execute and return a Query-object
$result = $sqlQuery->execute();
$myDataObjectSet = singleton('wp_posts')->buildDataObjectSet($result);
var_dump($myDataObjectSet->First()); // DataObject
得到的错误是:
[用户错误]坏类到singleton()
这将返回一个WordPress帖子的DataObjectSet(在本例中是最新的3个)。假设WordPress和SilverStripe在同一个数据库中
function LatestPosts() {
$sqlQuery = new SQLQuery();
$sqlQuery->select("post_title", "post_content");
$sqlQuery->from("wp_posts");
$sqlQuery->where("post_status = 'publish'");
$sqlQuery->orderby("post_date DESC");
$sqlQuery->limit(3);
if ($result = $sqlQuery->execute()) {
$wp_posts = new DataObjectSet();
foreach($result as $row) {
$wp_posts->push(new ArrayData($row));
}
return $wp_posts;
}
return;
}
然后可以遍历模板中的DataObjectSet。
<% if LatestPosts %>
<% control LatestPosts %>
<h3>$post_title</h3>
<div>$post_content</div>
<% end_control %>
<% end_if %>