我一直在关注面向对象的php的udemy课程,并希望改进项目的最终结果。
我们创建了一个共享板,我们显示每个发布一个用户的共享,我想在共享页面中添加发布共享的用户。
到目前为止,Theres是两个表中的一个用于共享的表,其中user_id与users表中的用户链接这是当前的代码:
模特:
class ShareModel extends Model{
public function Index(){
$this->query('SELECT * FROM shares ORDER BY create_date DESC');
$rows = $this->resultSet();
return $rows;
}
}
观点:
<div>
<?php if(isset($_SESSION['is_logged_in'])) : ?>
<a class="btn btn-success btn-share" href="<?php echo ROOT_PATH; ?>shares/add">Share Something</a>
<?php endif; ?>
<?php foreach($viewmodel as $item) : ?>
<div class="well">
<h3><?php echo $item['title']; ?></h3>
<small><?php echo $item['create_date']; ?></small>
<hr />
<p><?php echo $item['body']; ?></p>
<small><?php echo $item['user_id']; ?></small>
<br /><br />
<a class="btn btn-default" href="<?php echo $item['link']; ?>" target="_blank">Go To Website</a>
</div>
<?php endforeach; ?>
</div>
我知道在模型中我需要像这样更改索引:
class ShareModel extends Model{
public function Index(){
$query1 = $this->query('SELECT * FROM shares ORDER BY create_date DESC');
$query2 = $this->query('SELECT shares.id, users.name FROM shares INNER JOIN Users ON shares.user_id = users.id');
return array($query1, $query2);
}
}
但是如何在视图中访问它以显示sahre的内容和用户名?
答案 0 :(得分:0)
根据我的理解,在视图文件中,print_r()是$viewmodel
。 $viewmodel[0]
将返回第一个查询的结果集&amp; $viewmodel[1]
将返回2nd的结果集。
还有为什么要编写2个查询? 写一个像:
SELECT shares.id,shares.*, users.name
FROM shares
INNER JOIN Users ON shares.user_id = users.id
ORDER BY create_date DESC
答案 1 :(得分:0)
在每次查询后,您都没有致电$this->resultSet()
。
public function Index(){
$query1 = $this->query('SELECT * FROM shares ORDER BY create_date DESC');
$result1 = $this->resultSet();
$query2 = $this->query('SELECT shares.id, users.name FROM shares INNER JOIN Users ON shares.user_id = users.id');
$result2 = $this->resultSet();
return array($result1, $result2);
}