[英]Display name from an Inner join
我一直在跟蹤有關面向對象php的課程,並希望改善該項目的最終結果。
我們創建了一個共享板,在其中顯示發布過的每個用戶的共享,我想在發布頁面中添加發布該共享的用戶。
到目前為止,數據庫中有兩個表,其中一個用於通過user_id與用戶表中的用戶鏈接的共享
這是當前代碼:
該模型:
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的內容和用戶名?
根據我的理解,在視圖文件中,print_r()是$viewmodel
。 $viewmodel[0]
將返回第一個查詢的結果集,而$viewmodel[1]
將返回第二個查詢的結果集。
另外為什么要編寫2個查詢? 寫一個像:
SELECT shares.id,shares.*, users.name
FROM shares
INNER JOIN Users ON shares.user_id = users.id
ORDER BY create_date DESC
您不會在每次查詢后調用$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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.