codeigniters db->get() に関して問題があります。「手動で」dbに渡すと結果が得られますが、codeigniterを使用すると空の結果が得られます。ほとんど同じクエリですが、where の代わりに like が機能します。
SQL は次のとおりです。
SELECT se.Id, se.Name, se.Alias, sy.Name as System, os.Name as Os, ac.Name as Access, se.Description
FROM cdl_server se
INNER JOIN cdl_system sy on sy.Id = se.System
INNER JOIN cdl_os os on os.Id = se.Os
INNER JOIN cdl_access ac on ac.Id = se.Access
WHERE se.Id = 1
コードは次のようになります。
$this->db->select(
'se.Id, se.Name, se.Alias, ' .
'sy.Name as System, os.Name as Os, ac.Name as Access, ' .
'se.Description',
FALSE);
$this->db->from('cdl_server se');
$this->db->join('cdl_system sy', 'sy.Id = se.System' ,'inner', FALSE);
$this->db->join('cdl_os os', 'os.Id = se.Os' ,'inner', FALSE);
$this->db->join('cdl_access ac', 'ac.Id = se.Access' ,'inner', FALSE);
$this->db->where('se.Id', $id, FALSE);
$this->db->get();
編集:私は次のように使用します: $query = $this->db->get(); $query->result(); を返します。
データベースに送信される前にSQLクエリをvar_dumpすると、次のようになります。
string(264) "SELECT se.Id, se.Name, se.Alias, sy.Name as System, os.Name as Os, ac.Name as Access, se.Description FROM cdl_server se INNER JOIN cdl_system sy ON sy.Id = se.System INNER JOIN cdl_os os ON os.Id = se.Os INNER JOIN cdl_access ac ON ac.Id = se.Access WHERE se.Id =1"
しかし、結果は常に空ですが、上記をコピーしてデータベースに直接問い合わせようとすると、必要な結果が得られます。
誰がそれを引き起こしているのか知っていますか?