php - Codeigniter 事件记录类加入两个 mysql 表

标签 php mysql codeigniter

只想从表reviews中获取user_idreview_text值,选择namecity 来自 users 表,其中 id=user_id 然后返回 review_text, usernamecity 给 Controller 。请帮助我。

public function did_get_reviews($item_id){

    $this->db->select('user_id','review_text');
    $this->db->from('reviews');   
    $this->db->where('post_id', $item_id);

    $user_id = 'user_id' //??

    $this->db->select('name','city');
    $this->db->from('users');   
    $this->db->where('id', $user_id);

    $query = $this->db->get('review_text','username','city'); //??

    if ($query && $query->num_rows() >= 1){
    return $query->result();
    }
    else {
    return false;
    }
   } 

更新 1: 我只是尝试连接表,但它仅返回 review_text 的值,但我还想获取 namecity 的值。请检查以下代码:

public function did_get_reviews($item_id){

    $this->db->select('reviews.review_text','users.name','users.city');
    $this->db->from('reviews','users');   
    $this->db->where('reviews.post_id', $item_id);
    $this->db->join('users','reviews.user_id = users.user_id');

    $query = $this->db->get();

    if ($query && $query->num_rows() >= 1){
    return $query->result();
    }
    else {
    return false;
    }
   }

最佳答案

我认为您需要在 SQL 中使用 join 查询。如果您使用此代码,您可以访问您想要的内容

$result = $this->db->select('review, username, city')
            ->from('reviews')
            ->join('city', 'city.user_id = review.user_id')
            ->get();
print_r($result);

有关如何在 codeigniter 中编写连接查询(左、内或右)的更多信息,您可以查看 link

我希望这段代码能解决你的问题


更新

在你的新问题中。您的代码有一些错误。你需要这样写你的选择

public function did_get_reviews($item_id){

    $this->db->select('reviews.review_text,users.name,users.city')
             ->from('reviews','users')   
             ->where('reviews.post_id', $item_id)
             ->join('users','reviews.user_id = users.user_id');

    $query = $this->db->get();

    if ($query && $query->num_rows() >= 1){
    return $query->result();
    }
    else {
    return false;
    }
   }

在codeigniter中选择Active record;任何列名称彼此仅通过 , 分隔(不是通过 ',)

在 codeigniter 中 documentation写到

Permits you to write the SELECT portion of your query:

$this->db->select('title, content, date');

$query = $this->db->get('mytable');

// Produces: SELECT title, content, date FROM mytable

关于php - Codeigniter 事件记录类加入两个 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24971008/

相关文章:

php - 如何从 MySQL 表中获取当前年份之前的年份

php - Lithium PHP 框架 - 播种数据库?

mysql - 将多个 mySQL 查询放入一个复杂的查询中

php - 如何在 MySQL 中搜索包含两个或多个由空格分隔的单词的字符串字段?

mysql - 如何为数据库生成 ERD 或 UML?

javascript - 从 PHP 获取 json 数据到我的 JavaScript 中以进行 float

php - 这些PHP字符串插值语法有什么区别

mysql - Codeigniter:从三个表生成学生成绩单

php - 在 codeigniter 的自定义库中使用自定义库?

php - 我们如何在 ConfigureIT 管理或数据面板的产品模块列表中显示产品价格的总计