Codeigniter 如何检查查询结果中的值是否为空活动记录-编码点火器

Codeigniter 如何检查查询结果中的值是否为空活动记录-编码点火器,codeigniter,activerecord,Codeigniter,Activerecord,我想知道如何检查表(管理器)中是否存在值,然后根据该表中是否存在值添加“是”或“否”字符串 $this->db->select('employees.first_name, employees.last_name, departments.department_name, departments.department_numb, titles.title'); $this->db->from('employees'); $t

我想知道如何检查表(管理器)中是否存在值,然后根据该表中是否存在值添加“是”或“否”字符串

$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;
我想检查“部门经理”表中是否有员工,该表由员工编号连接。因此,如果该员工编号不在“部门经理”表中,那么我想在数组索引
$entry[ismanager']
中插入一个表示“否”的字符串,如果该员工编号在“部门经理”表中,那么我想
$entry['ismanager']
保存字符串“是”


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

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

IFNULL(expr1,expr2)
其中:

expr1 == null condition (in your case NULL)

expr2 == replacement value

来源:

为什么有一个基本上是计算值的字段?这就像有“每箱数量”、“箱数量”字段,然后将所有项目保存到第三个字段。不要将可以通过快速查询访问的内容保存到数据库中。在上面的查询中,只需将dept-manager联接更改为left联接,包括dept-manager id,并说明如果记录中该字段为空,则该人员不是经理。使用左联接将返回所有记录,无论它们在管理表中是否有条目

$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\u manager.emp\u numb到select

加入:

$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;
 } 

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

是的,我这样做了,但由于某种原因,如果员工编号不在表“department\u manager”中,我在计算查询时会得到一个空的JSON对象。现在需要弄清楚为什么会这样。感谢您的输入,我已经弄清楚了如何检查是否存在值,但是当员工不是经理时,我会得到一个空的JSON字符串。否则,它将返回作为经理的员工。我使用了一个if语句,类似于您用来实现的语句,这就是应该填充json的返回语句吗?如果是这样,那就行不通了。打印json_encode($data);威尔:是的,我在我的控制器中对它进行了json编码,这是在我的模型中生成的。听起来问题不在模型上。尝试使用Google Chrome进行故障排除。开发者工具(F12)>网络>XHR(屏幕右下角)您可以发送AJAX并在那里观看响应。我会试着把数据打印出来;死亡在返回之前的模型中,查看您得到了什么,然后在控制器中尝试相同的操作,查看它得到/传递了什么。通过一些调查,您应该能够找到问题所在。=)太棒了!很高兴我能帮忙。