Php Codeigniter连接的表获得错误的输出

Php Codeigniter连接的表获得错误的输出,php,codeigniter,join,Php,Codeigniter,Join,我有一个函数,它从数据库中获取数据,并连接不同的表。方法如下: public function getCallcenterCall() { $this->db->select('bedrijf.*, status.status_naam, quickscan.datum_verzonden'); $this->db->join('quickscan', 'bedrijf.id = quickscan.bedrijf_id'); $this->

我有一个函数,它从数据库中获取数据,并连接不同的表。方法如下:

public function getCallcenterCall() {
    $this->db->select('bedrijf.*, status.status_naam, quickscan.datum_verzonden');
    $this->db->join('quickscan', 'bedrijf.id = quickscan.bedrijf_id');
    $this->db->join('status', 'bedrijf.status = status.status_id');
    $this->db->where('status', '0');

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

    return $query->num_rows() > 0 ? $query-> result_array() : FALSE;
}
在status表中,我得到了3行:
'id'
'status\u id'
'status\u naam'
。在我看来,我输出了
状态\u naam
,但在这里它出错了

而不是给我属于
'status\u id=0'
'status\u naam'
;它给我提供了
'status\u naam'
,其中
'status\u id=1'

如果我尝试获取
'status\u id=1'
'status\u naam'
,则它会从
'status\u id=2'
中为我提供
'status\u naam'


我做错了什么?提前谢谢

您是否尝试过使用from方法

$this->db->select...
$this->db->from('bedrijf')
...
$query = $this->db->get()
...

我认为您可能需要使用
join
的第三个参数,例如

$this->db->join('quickscan', 'bedrijf.id = quickscan.bedrijf_id', 'inner');
$this->db->join('status', 'bedrijf.status = status.status_id', 'inner');

如果仍然失败,您可能需要使用自定义查询:

$s  = 'SELECT ';
$s .=    'bedrijf.*, status.status_naam, quickscan.datum_verzonden ';
$s .= 'FROM bedrijf ';
$s .= 'INNER JOIN quickscan ON bedrijf.id = quickscan.bedrijf_id ';
$s .= 'INNER JOIN status ON bedrijf.status = status.status_id ';
$s .= 'WHERE (status = ?)';

$query = $this->db->query($s, array('0'));

数据库设置是否使用外键约束

简单的例子:

桌子

create table `groups`(
`id` int(10) unsigned not null auto_increment primary key,
`name` varchar(30) not null,
`colour` varchar(7) not null,
`created_at` datetime not null,
`updated_at` datetime not null
 )engine=innodb;


create table `users`(
`id` int(10) unsigned not null auto_increment primary key,
`group_id` int(10) unsigned not null,
`permissions` varchar(255) not null default '{[u, r, d]}',
`created_at` datetime not null,
`updated_at` datetime not null,
index(group_id),
foreign key(group_id) references groups(id)
)engine=innodb;
原始SQL

select g.name, u.permissions from users as u
left join groups as g
on g.id = u.group_id
where id=1
如您所见,您在用户表上设置了
group\u id
索引, 然后将其设置为外键,并告诉它引用
id

需要innodb引擎&行必须完全匹配


…希望这是有意义的

你是对的,我的状态是endum,状态是int。这解决了问题,谢谢!