2013-03-19 6 views
10

Sto lavorando a un modulo di back-end che salva su una tabella personalizzata. Il mio problema è che ho aggiunto campi a questa tabella mentre ci sto lavorando, i campi appena aggiunti non salveranno con la funzione model -> Save().Il modello Magento non salverà i valori

Ho rimosso completamente il modulo e lo ho reinstallato, permettendogli di creare il mio tavolo personalizzato da zero nel caso in cui avesse un numero di campi interno di cui non ero a conoscenza, ma sempre lo stesso risultato.

Dopo l'aggiunta dei miei dati ho fare una discarica var su ciò che viene presentato in questo modo:

$model = Mage::getModel("smsmanager/sms")->addData($post_data)->save(); 
var_dump($model->getData()); exit; 

Con il risultato

array 
    'form_key' => string 'RUGN3fruWobAf8CZ' (length=16) 
    'message' => string 'adg asdg sad' (length=14) 
    'country' => string 'SE' (length=2) 
    'telephone' => string '+46707332290' (length=12) 
    'type' => int 2 
    'id' => string '5' (length=1) 

e tutto sembra più che bene. Quando controllo la riga appena creata con ID 5, ottengo questo:

|-----------------------------------------------------------------------------------------------------------| 
|id int(11)| type int(11) | telephone varchar(20) | country varchar(2) | message text | date timestamp  | 
|-----------------------------------------------------------------------------------------------------------| 
| 5  | 2   | +46707332290   | NULL    | adg asdg sad | 2013-03-19 21:44:51 | 
|-----------------------------------------------------------------------------------------------------------| 

Ho anche provato a inserire manualmente gli altri campi nella tabella di database come "junkfield" e aggiungerlo con $post_data['junkfield'] = "hello"; e diventa anche nullo come valore.

Per me, sembra che Magento mi stia prendendo in giro. Logica sfidante. Qualcuno ha preso un'altra opinione su cosa potrebbe essere sbagliato? Oh, e prima che dimentichi, ecco il mio schema:

CREATE TABLE IF NOT EXISTS `sms_entry` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `type` int(11) NOT NULL, 
    `telephone` varchar(20) DEFAULT NULL, 
    `country` varchar(2) DEFAULT NULL, 
    `message` text, 
    `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

Non importa quello che provo, semplicemente non salverà il codice del paese. Ho anche provato a fare il varchar più grande di 2, cambiando il nome in country_code (nel caso in cui il paese fosse riservato o qualcosa del genere). Niente sembra aiutare.

risposta

32

Disabilitare le opzioni di memorizzazione nella cache nel sistema di amministrazione di Magento fa NON disabilitare tutto il caching. Magento memorizza nella cache le strutture delle tabelle, i dati locali, ecc., Nella directory var/cache/, nella cartella radice di Magento (questo è NON/var/cache).

Per disattivare la memorizzazione nella cache, aggiungere la <cache> seguente voce alla sezione <global> di app/etc/local.xml:

<config> 
    <global> 
     ... 
     <cache> 
      <backend>Zend_Cache_Backend_BlackHole</backend> 
     </cache> 
     ... 

per svuotare la cache contenente le strutture delle tabelle, entrare nel sistema di amministrazione e selezionare Sistema> Gestione Cache> Storage Flush Cache (non Flush Magento Cache!). Questo rimuoverà i file in var/cache.

È inoltre possibile svuotare la cache tramite la riga di comando:

$ sudo rm -fr /path/to/your/magento/installation/var/cache/* 
+1

Hmm, questo spiegherebbe molto. Ho passato 2 ore con questo e stavo iniziando a pensare che stavo perdendo la testa. : P –

+0

+1 per chiarire –

+0

wow grazie! ora capisco perché Magento memorizza nella cache i miei errori che ho risolto – nakajuice

5

per quanto ne so - Magento la struttura del database di caching in qualche modo. quindi solo Flush Magento Cache dovrebbe aiutare

+0

Ma ho rimosso tutto, compresa la riga 'core_resources' con il modulo e quindi reinstallato. Anche tutte le mie impostazioni della cache sono disattivate per questo dispositivo di sviluppo locale. –

+1

Ho avuto gli stessi problemi qualche tempo fa e tutte le mie cache erano disabilitate. E come ricordo "la cache di Flush" era la mia soluzione. – TaganPablo

+0

ok, ci proverò domani. Grazie. –

0

+1 nota, inoltre, che nel mio caso, ho solo dimenticato che stavo usando la cache REDIS, quindi nel caso in cui si utilizza questo, don' t dimentica di rimuovere anche questo cache !!