下面我有这个方法,它负责为我提供一个对象数组(博客)。
public function getListaBlogsById($id) {
$result = array();
try {
$statement = $this->getDb()->prepare('SELECT * FROM Blog WHERE categoria_id = :id');
$statement->bindParam(':id', $id);
$statement->execute();
$result = $statement->fetchAll();
} catch (Exception $ex) {
$ex->getTrace();
}
return $result;
}
我知道数组不是null。我想要做的是以这种方式迭代数组中的对象:
<?php foreach ($blog_category as $item): ?>
<h2>
<a href="<?php echo Utils::createLink('detail-post', array('id' => $item->getId())); ?>"><?php echo $item->getTitle(); ?></a>
</h2>
<p class="lead">
by <a href="<?php echo Utils::createLink('detail-post', array('id' => $item->getId())); ?>"><?php echo $item->getAuthor(); ?></a>
</p>
<p><i class="fa fa-clock-o"></i> Postado em
<?php $date = strtotime($item->getDate());
$br_format = date("d/m/Y g:i A", $date);
echo $br_format;
?></p>
<hr>
<a href="<?php echo Utils::createLink('detail-post', array('id' => $item->getId())); ?>">
<img class="img-responsive img-hover" src="../web/img/1850_james_ancestry.JPG" alt=""/>
</a>
<hr>
<p><?php echo $item->getPre(); ?></p>
<a class="btn btn-primary" href="<?php echo Utils::createLink('detail-post', array('id' => $item->getId())); ?>">Leia mais <i class="fa fa-angle-right"></i></a>
<hr>
<?php endforeach; ?>
但该页面没有任何内容。
任何光明都会受到赞赏。
答案 0 :(得分:1)
使用的对象将是从strClass()创建的,因此没有任何与之关联的get方法。
因此,要更改脚本,以便直接访问这些对象的属性,而不是期望它们具有关联的->getxxx()
方法。
<a href="<?php echo Utils::createLink('detail-post', array('id' => $item->id)); ?>">
<?php echo $item->title; ?>
</a>
属性的实际名称取决于您查询的表上的列名(和列名称大小写)。
您可能还需要在getListaBlogsById($id)
功能中更改此行,以确保数据作为对象返回而不是数组
来自
$result = $statement->fetchAll();
到
$result = $statement->fetchAll(PDO::FETCH_CLASS);
答案 1 :(得分:0)
感谢@RiggsFolly的帮助。我解决了我的问题,做了一些修改作为休闲:
public function getListaBlogsById($id) {
try {
$result = array();
$blog = new Blog();
$statement = $this->getDb()->prepare('SELECT * FROM Blog WHERE categoria_id = :id');
$statement->bindParam(':id', $id);
if ($statement->execute()) {
while ($row = $statement->fetch()) {
BlogMapper::map($blog, $row);
$result[$blog->getId()] = $blog;
}
}
} catch (Exception $ex) {
$ex->getTrace();
}
return $result;
}
和
public static function map(Blog $blog, array $properties) {
if (array_key_exists('id', $properties)) {
$blog->setId($properties['id']);
}
if (array_key_exists('blog_author', $properties)) {
$blog->setAuthor($properties['blog_author']);
}
if (array_key_exists('blog_article_title', $properties)) {
$blog->setTitle($properties['blog_article_title']);
}
if (array_key_exists('blog_date_creation', $properties)) {
$blog->setDate($properties['blog_date_creation']);
}
if (array_key_exists('blog_article_pre', $properties)) {
$blog->setPre($properties['blog_article_pre']);
}
if (array_key_exists('blog_article', $properties)) {
$blog->setArticle($properties['blog_article']);
}
if (array_key_exists('categoria_id', $properties)) {
$blog->setCategoria_id($properties['categoria_id']);
}
}