2016-09-28 16 views
0

私はgoogleを使っていますが、フィールドではない場合は新しいフィールドを作成するための適切な解決策が見つかりませんでした。cakephpテーブルにない場合は新しいフィールドを作成

たとえば、他の言語のタイトルに従ってフィールドを追加する必要がある場合。など

titletitle_engtitle_fr ...私はphpで解決策を見つけたが、私は解決策の上にしようとしたが、このエラーを取得cakephp

$languageData = $this->LanguageSetting->find('first', array('conditions' => array('id' => $post['language_id']))); 

       $short_name = $languageData['LanguageSetting']['short_name']; 
       $subjectfieldName = "email_subject_" . $short_name; 
       $contentfieldName = "email_template_" . $short_name; 

       //add subject field if not present 
       $subjectfield = $this->LanguageSetting->query("SELECT $subjectfieldName FROM email_managers"); 
       if (!$subjectfield) { 
        $insert_col = "ALTER TABLE email_managers ADD " . $subjectfieldName . " VARCHAR(255) NULL"; 
       } 

       //add template field if not present 
       $contentfield = $this->LanguageSetting->query("SELECT $contentfieldName FROM email_managers"); 
       if (!$contentfield) { 
        $insert_col = "ALTER TABLE email_managers ADD " . $contentfieldName . " TEXT NULL"; 
       } 

である解決策を探しています。

Database Error

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'email_subject_' in 'field list'

+0

本当に? Googleのスキルを向上させる:https://www.google.com/search?q=cakephp+2+translations&oq=cakephp+2+translations最初のヒット。 – burzum

+0

私は翻訳したくなかった。 –

+1

"*他の言語で書かれているタイトルに従ってフィールドを追加しなければならない場合*"これは翻訳ではありませんか?しかし、これに対するあなたのアプローチは、複数の理由から非常に悪いものです。動作を確認してください。 – burzum

答えて

-1

これは役に立ちます。

$columns = $this->LanguageSetting->query('show columns from email_managers'); 
       $exists = FALSE; 
       foreach ($columns as $fields) { 
        if ($fields['COLUMNS']['Field'] == $subjectfieldName) { 
         $exists = true; 
         break; 
        } 
       } 
       if (!$exists) { 
        $this->LanguageSetting->query("ALTER TABLE email_managers ADD " . $subjectfieldName . " VARCHAR(255) NULL"); 
       } 
関連する問題