php - Codeigniter 2.1 - MySQL 连接

标签 php mysql codeigniter codeigniter-2

我有两个表:

MENU
->id_menu
->title
->page_id
->order

PAGES
->id_page
->title
->page
->slug

这是选择函数:

public function get_all_menu()
    {
        return $this->db
        ->select('menu.*, pages.id_page, pages.title AS page_title')
        ->from($this->table)
        ->join('pages','id_page = page_id')
        ->order_by($this->order_by)
        ->get()
        ->result_array();
    }

这是我的问题 - 菜单中的项目可以连接到页面,但也可以是单独的(不连接到页面)。这意味着 MENU 表中的 page_id 可以为 0。如果 page_id 为 0,则我不会从上述查询中获取该行。我怎样才能得到菜单中的所有项目(那些与页面连接的和那些没有连接的)?

最佳答案

您需要在->join() 中添加join type

喜欢

public function get_all_menu()
 {
    return $this->db
    ->select('menu.*, pages.id_page, pages.title AS page_title')
    ->from($this->table)
    ->join('pages','id_page = page_id','left')
    ->order_by($this->order_by)
    ->get()
    ->result_array();
}

参见引用手册 Active Record

关于php - Codeigniter 2.1 - MySQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16668884/

相关文章:

php - 如何通过一个查询从一张表中选择多个键值?

php - Laravel 工厂没有返回正确的对象数据

javascript - 即使包含 timepicker css 和 js 文件,$(...).timepicker 也不是函数错误?

MySQL存储过程返回表

mysql - CodeIgniter 分页多表

php - SQL 事件记录查询与 where 空子句连接

php - 通过php表单向mysql数据库添加多个条目

php - 使用 $_GET 将多个具有相同名称的 html 复选框添加到 URL

mysql - 从多个表中获取值(value)

php - Laravel - 如何在查询中使用 session 用户名