2012-05-11 9 views
2

db接頭辞を使用するようにコードイグナイタを設定しました。コードイグナイタテーブルのエイリアスの前にdb接頭辞を付けます

他のすべての場所では、期待どおりに動作していますが、テーブルエイリアスを作成する際には、db接頭辞が前に付きます。私dbprefixが 'foo' を値に設定されると仮定すると、

$this->db->from('table_a'); 
$this->db->join('table_b', 'table_a.id = table_b.a_id', 'left'); 
----- 
$this->db->join('table_b as tablebAlias', 'table_c.id = tablebAlias.a_id', 'left'); 

- :

コードは下の通りです。実行なっている

最終問合せは、下の通りです: -

Select * From foo_table_a left join foo_table_b on foo_table_a.id = foo_table_b.a_id 
--- left join foo_table_b as tablebAlias on foo_table_c.id = foo_tablebAlias.a_id 

すべてのヘルプは非常にかなりの量になります。

おかげで、 Jatin

+0

あなたの質問は何ですか?ここで期待どおりに動作していません –

+0

同じプリフィックスのエイリアスを作成するのは適切な解決策ではありませんか? –

+0

そのバグhttp://codeigniter.com/forums/viewthread/126699/。 dbprefixを使用する必要がある場合、これを処理する適切な方法について@ Christianの回答を参照してください。 – gorelative

答えて

0

私はあなたがdbprefixを避けるために、通常のクエリを使用すべきだと思います。 使用する$this->db->query('your query')

+2

まあまあこれはノーノー。その場合、フレームワークを使用する目的は失われています。 –

8

私は手動クエリがテーブルプレフィックスを無視することがわかりました。私はまた、手動クエリにテーブルプレフィックスを追加する方法があることが判明:これを行うことができるようにするため

$db['default']['dbprefix'] = "feed_"; 
$db['default']['swap_pre'] = "{PRE}"; 

ます。config/database.phpで

は、一つは、これを行うことができます:

$sql = "SELECT * FROM {PRE}item"; 
$query = $this->db->query($sql); 

{PRE}はフィード_になります。

しかし、swap_preはこれがCI 2.0の機能だと思うようになるconfig.phpではありません。

関連する問題