我找到了解決方案whitch我現在工作很細。我需要的一切就是使用PDO。 這裏是我現在的代碼:
$this->db->conn_id->setAttribute(PDO::ATTR_FETCH_TABLE_NAMES, 1);
$query = $this->db->query("SELECT * FROM comments c LEFT JOIN users u ON u.user_id = c.user_id");
foreach ($query->result_array() as $row)
{
$comment = row2object($row, 'Comment', 'c');
$comment->user = row2object($row, 'User', 'u');
$comments[] = $comment;
}
而且row2object()助手:
/**
* Row to object
* application/helpers/row2object_helper.php
*
* @param array $row
* @param string $class
* @param string $from_table alias of table name
*/
function row2object(&$row, $class, $from_table)
{
$object = new $class;
foreach($row as $key => $value)
{
list($table, $column) = explode(".", $key);
if($table == $from_table)
{
$object->{$column} = $value;
unset($row[$key]);
}
elseif ($table == "" && substr($key, 1, strlen($from_table)) == $from_table)
{
$column = substr($key, strlen($from_table) + 2);
$object->{$column} = $value;
unset($row[$key]);
}
}
return $object;
}
THX,我可以實現類似的東西,但如果表用戶和評論有相同名稱的列,例如'email'? – sasa
您應該使用別名或將字段名稱更改爲類似commentEmail和userEmail的內容。 無論哪種方式,你會在你造成的查詢重命名字段。 別名是創建這樣您的查詢,SELECT comment.email AS commentEmail,user.email AS USEREMAIL,(你需要的所有字段)FROM(...) –