如何检查查询结果中的值是否为空? - 活动记录 - CodeIgniter

时间:2012-12-12 21:24:21

标签: codeigniter activerecord

我想知道如何检查表中是否存在值(管理器),然后添加“是”或“否”字符串,具体取决于该表中是否有值。

$this->db->select('employees.first_name, employees.last_name, departments.department_name, departments.department_numb, titles.title');
            $this->db->from('employees');
            $this->db->where('first_name', $firstname);
            $this->db->where('last_name', $lastname);
            $this->db->join('department_manager', 'department_manager.emp_numb = employees.emp_numb', 'inner');
            $this->db->join('departments', 'departments.department_numb = department_manager.department_numb', 'inner');
            $this->db->join('titles', 'titles.emp_numb = employees.emp_numb', 'inner');
            $this->db->where('department_name', $dept);
            $this->db->where('title', $jobtitle);
            $result = $this->db->get();

            $data = array();
            foreach($result->result() as $row)
            {
                $entry = array();
                $entry['firstname'] = $row->first_name;
                $entry['lastname'] = $row->last_name;
                $entry['jobtitle'] = $row->title;
                $entry['dept'] = $row->department_name;
                $entry['deptid'] = $row->department_number;
                //$entry['ismanager'] = 

                $data[] = $entry;
            }
            return $data;

我想检查一个员工是否出现在由员工编号加入的表'department_manager'中。因此,如果表'department_manager'中没有该员工编号,那么我想在数组索引$entry[ismanager']中插入一个表示“否”的字符串,如果员工编号出现在表'department_manager'中,那么我希望$entry['ismanager']保持字符串'yes'。

但我很困惑如何检查该员工是否在该表中。我是在活动记录查询中还是在foreach循环中执行此操作?如果它是在foreach循环中完成的,那么如何在查询完成时进行比较呢?

2 个答案:

答案 0 :(得分:1)

如果您使用的是MySQL,我认为您正在寻找:

IFNULL(expr1,expr2)

其中:

expr1 == null condition (in your case NULL)

expr2 == replacement value

来源:Control Flow Functions

答案 1 :(得分:1)

为什么一个字段基本上是一个计算值?这就像每个盒子的数量,盒子数量的字段,然后将总项目保存到第三个字段。永远不要保存到数据库中,您可以通过快速查询获得访问权限。在上面的查询中,它就像将部门管理器连接更改为左连接一样简单,包括部门经理ID,并说明该字段在记录中是否为空白该人员不是经理。使用LEFT join将返回所有记录,无论它们是否在管理表中有条目。

将add:department_manager.emp_numb添加到选择。

加入:

$this->db->join('department_manager', 'department_manager.emp_numb
= employees.emp_numb', 'left');

然后在foreach:

if(!$row->department_manager.emp_numb)
 {
    this person is not a manager;
 } 

如果你觉得你真的必须有这个额外的字段,那么你仍然可以用上面的方法填充它。