如果这是一个简单的道歉,我正在了解数据对象在Silverstripe中的工作方式。
我的任务是从我们网站上的wordpress博客(目前在/博客上)获取帖子列表,并在页脚中显示最新帖子,在另一种情况下,在页面上显示某些编辑的帖子。
我已经看过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
我得到的错误是:
[用户错误]单件()的错误类 - wp_posts
答案 0 :(得分:1)
这将返回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 %>