我想知道如何检查表中是否存在值(管理器),然后添加“是”或“否”字符串,具体取决于该表中是否有值。
$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循环中完成的,那么如何在查询完成时进行比较呢?
答案 0 :(得分:1)
如果您使用的是MySQL,我认为您正在寻找:
IFNULL(expr1,expr2)
其中:
expr1 == null condition (in your case NULL)
expr2 == replacement value
答案 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;
}
如果你觉得你真的必须有这个额外的字段,那么你仍然可以用上面的方法填充它。