2012-02-13 1 views
4

は、私がCodeigniterのActive Recordを使用してJOINされたテーブルを更新できますか?ここ

function edit_save($data, $post_id, $user_id) 
{ 
    $this->db->where('post.user_id', $user_id); 
    $this->db->where('post.post_id', $post_id); 
    $this->db->join('data', 'post.data_id_fk = data.data_id', 'left'); 
    $this->db->update('post', $data); 
} 

「ポスト」テーブルは「データ」で左結合する必要がある操作を行いたいのですが何です。

上記を実行すると、 'data'テーブルのフィールドの1つが見つからないというSQLエラーが表示されます。

提案がありますか?

MORE INFO

これは、生成されたSQLクエリ

UPDATE `post` 
SET `data_value` = '111', `data_date` = '2012-02-13', `post_text` = '111' 
WHERE `post_stream_id` = '5' 
    AND `post_id` = '18' 

これではエラー

Unknown column 'data_value' in 'field list' 

それは、JOINステートメントを示していないです。

+0

正確なエラーメッセージは何ですか?列は存在しますか? SQLが実行される正確なSQLは何ですか? –

+0

aaron、コラムがあります - もっと多くのコードが掲載されています - あなたの考えを教えてください – pepe

+1

合理的な解決方法 - http://stackoverflow.com/q/4830380/445142 – pepe

答えて

3

を更新するために、このアクティブレコードクエリを試してみては加入:

function edit_save($data, $post_id, $user_id) 
{ 
    $this->db->set($data) 
    $this->db->where('post.user_id', $user_id); 
    $this->db->where('post.post_id', $post_id); 
    $this->db->where('post.data_id_fk = data.data_id'); 
    $this->db->update('post, data'); 
} 
+1

私の解決策は、あなたが提供したリンクと同じです。だから、この回答を受け入れてください。回答の受付方法については、[このリンク](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を参照してください。ありがとうございました! –

+1

更新ラインが機能しなくなりました。 CodeIgniterのエスケープ機能を回避するには、「as」SQL構文が必要でした。 –

関連する問題