[英]Array Objects with queries
我想做的是創建一個數組,其中包含標題的列表,標題名稱,數據庫行的ID,然后是冠軍和競爭者的名稱。 對於冠軍和競爭者的值,我需要執行其他查詢以檢索此人的花名。 如果冠軍的值為0,則需要將該陣列的空缺添加到陣列中,如果競爭者的值為0,則對陣列使用TBD。 這就是我正在使用的內容,其中包括查詢和print_r輸出。
我的問題是我不確定在哪里/如何在每個標題中使用冠軍和競爭者的值來運行附加查詢。
/**
* Get titles champions
*
* @return object/NULL
*/
function getTitlesChampions()
{
$this->db->select('titlesList.id');
$this->db->select('titlesList.titleName');
$this->db->select('titlesChampions.championID');
$this->db->select('titlesChampions.contender1ID');
$this->db->select('titlesChampions.contender2ID');
$this->db->select('titlesChampions.contender3ID');
$this->db->from('titlesChampions');
$this->db->join('titlesList', 'titlesList.id = titlesChampions.titlesListID');
$query = $this->db->get();
if ($query->num_rows() > 0) {
echo "<pre>";
print_r ($query->result());
echo "</pre>";
}
}
Array
(
[0] => stdClass Object
(
[id] => 1
[titleName] => Undisputed Heavyweight Title
[championID] => 1
[contender1ID] => 1
[contender2ID] => 1
[contender3ID] => 1
)
[1] => stdClass Object
(
[id] => 2
[titleName] => Outlaw Title
[championID] => 1
[contender1ID] => 0
[contender2ID] => 0
[contender3ID] => 0
)
[2] => stdClass Object
(
[id] => 3
[titleName] => Tag Team Titles
[championID] => 1
[contender1ID] => 0
[contender2ID] => 0
[contender3ID] => 0
)
)
最佳實踐是一組附加的聯接和子查詢,但是鑒於架構的(假定)狀態,擁有輔助功能可能是最簡單的。
對於找到的每個結果,您將通過調用getRosterName()
進行遍歷並分配名稱。 該函數將返回並將其他信息添加到Champions對象。
/**
* Get titles champions
*
* @return object/NULL
*/
function getTitlesChampions()
{
$this->db->select('titlesList.id');
$this->db->select('titlesList.titleName');
$this->db->select('titlesChampions.championID');
$this->db->select('titlesChampions.contender1ID');
$this->db->select('titlesChampions.contender2ID');
$this->db->select('titlesChampions.contender3ID');
$this->db->from('titlesChampions');
$this->db->join('titlesList', 'titlesList.id = titlesChampions.titlesListID');
$query = $this->db->get();
if ($query->num_rows() > 0) {
$result = query->result();
foreach($result as $row)
{
// Iterate through
$row->championName = $this->getRosterName($row->championID);
$row->contender1Name = $this->getRosterName($row->contender2ID);
$row->contender2Name = $this->getRosterName($row->contender2ID);
$row->contender3Name = $this->getRosterName($row->contender3ID);
}
// Return it
return $result;
}
return null;
}
/*
/* Returns the name */
function getRosterName($rosterId = null)
{
if($rosterId && $rosterID > 0)
{
$this->db->select('RosterName');
$this->db->where('rosterId', $rosterId);
$query = $this->db->get('roster'); // Or whatever your `roster` table is named.
return $query->row()->firstName; // Or whatever the name is you want returned
}
return null;
}
我對您的架構一無所知,所以這是黑暗中的一槍。
祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.