希望有人可以帮助我。我已经使用PHP一段时间了,但我是Codeigniter的新手。
基本上我在两个单独的数据库上有两个表,分别称为“照片”和“用户”。 “照片”包含有关用户想要查看的照片的信息,然后“用户”包含拥有该照片的用户的信息。
以下是代码:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Viewphoto_model extends CI_Model {
public function get_photo($id)
{
$db_photos = $this->load->database('photos', TRUE);
$db_photos->select('*');
$db_photos->select("DATE_FORMAT(uploaddate, '%d/%m/%y') as uploaddate_formatted", FALSE);
$db_photos->from('photos');
$db_photos->where('approved', '1');
$db_photos->where('id', $id);
$query = $db_photos->get();
return $query->row();
}
}
所以基本上它根据用户输入到URL中的ID来抓取数据库中的行。
工作正常。
“照片”表中的每一行都是一个用户ID号,它是“用户”数据库/表中行的ID号。我希望能够根据“照片”表格中行中的ID号从“用户”表中获取相关行。
我一直试图找到答案,但到目前为止还没有运气。我是想在两个数据库之间进行连接,还是可以将get_photo函数中的值传递给运行第二个查询的第二个函数?怎么办呢?
我想要的方法是从第一个查询的结果中获取userid值,然后将其放入第二个函数的第二个查询中?我该怎么做?
非常感谢任何帮助:)
谢谢!
答案 0 :(得分:1)
这应该在理论上有效,而不是使用codeigniter AR进行太多实践。
$db_photos->select(
"u.*, DATE_FORMAT(p.uploaddate, '%d/%m/%y') as uploaddate_formatted"
, FALSE);
$db_photos->from('photos as p');
$this->db->join('users as u', 'u.id = p.user_id', 'left');
包括你的where子句......
注意{如果您没有找到用户,那么他们的照片是? }
试试这个
//Should work Provided!! Configs are in this Order
//$db['photos']['']
//$db['default']['']
//First Query ( Users )
$q1 = $this->db->get_where('users', array('id'=>$id));
//Second Query (photos)
$db_photos = $this->load->database('photos', TRUE);
$q2 = $db_photos->select("DATE_FORMAT(uploaddate, '%d/%m/%y') as uploaddate_formatted", FALSE)
->from('photos')
->where('approved', (int)1);
->where('userid', $q1->row()->id)
->get();
var_dump($q1);
var_dump($q2);
//you job now is to build and object/array of the combined queries
//I dont know enough about the outcome to make those judgments