Сохранение данных как пустое в CakePHP

У меня есть цикл foreach, который сохраняет кучу записей в таблицу с помощью cakePHP.

foreach($interests as $id){
                $this->data['UserInterest']['user_id'] = $user_id;
                $this->data['UserInterest']['interest_id'] = $id;
                $this->data['UserInterest']['other_interest'] = $other;
                $UserInterest = new UserInterest;
                if(!$UserInterest->save($this->data)) {
                    $this->Session->setFlash(__l('Failed to save Interests.') , 'default', null, 'error');
                }
            }

Все отлично сохраняет, кроме других процентов

ОБНОВИТЬ:

Я сделал следующее

Я могу показать это отлично, если я сделаю это

$this->data['UserInterest']['other_interest'] = $other;
echo $this->data['UserInterest']['other_interest'];
                    $UserInterest = new UserInterest;

Но как-то сохраняет как пустой?

Мой макет базы данных выглядит так

CREATE TABLE IF NOT EXISTS `users_interests` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) NOT NULL,
  `interest_id` bigint(20) NOT NULL,
  `other_interest` varchar(150) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
)

а моя модель такая

<?php
class UserInterest extends AppModel
{
    var $name = 'UserInterest';

    var $useTable="users_interests";

    //$validate set in __construct for multi-language support
    //The Associations below have been created with all possible keys, those that are not needed can be removed
    var $belongsTo = array(
        'User' => array(
            'className' => 'User',
            'foreignKey' => 'user_id',
            'conditions' => '',
            'fields' => '',
            'order' => '',
        ) ,
        'Interests' => array(
            'className' => 'Interest',
            'foreignKey' => 'interest_id',
            'conditions' => '',
            'fields' => '',
            'order' => '',
        )
    );
    function __construct($id = false, $table = null, $ds = null) 
    {
        parent::__construct($id, $table, $ds);
        $this->validate = array(
            'user_id' => array(
                'rule' => 'numeric',
                'allowEmpty' => false,
                'message' => __l('Required')
            )
        );
    }
}
?>

Я делаю что-то неправильно?

ОБНОВИТЬ:

я сделал следующее

$this->data['UserInterest']['user_id'] = $user_id;
                $this->data['UserInterest']['interest_id'] = $id;
                $this->data['UserInterest']['other_interest'] = $other;
                 echo '<pre>';
                var_dump($this->data['UserInterest']);
                var_dump($other);
                var_dump($this->data['UserInterest']['other_interest']);

                $this->UserInterest = ClassRegistry::init('UserInterest');

И результаты var_dump, где следующее, и все равно не сохранилось

array(3) {
  ["user_id"]=>
  string(3) "659"
  ["interest_id"]=>
  string(2) "10"
  ["other_interest"]=>
  string(17) "Share Investments"
}
string(17) "Share Investments"
string(17) "Share Investments"

person Elitmiar    schedule 28.09.2011    source источник
comment
Не уверен, что это решит вашу проблему, но есть лучшие способы инициализировать вашу модель! В классе контроллера вы можете использовать массив $uses в определении класса следующим образом: $uses = array('UserInterest'); Некоторым это не нравится, так как это может занимать много памяти. В этом случае вы можете сделать следующее: $this-›UserInterest = ClassRegistry::init('UserInterest'); Попробуйте эти вещи вместо $UserInterest = new UserInterest; и посмотрите, поможет ли это.   -  person user470714    schedule 29.09.2011
comment
Спасибо, стоило попробовать, но это не помогло, я обновил свой вопрос.   -  person Elitmiar    schedule 29.09.2011
comment
Самое странное, что не сохраняется только это одно поле. Еще одна вещь, о которой я могу думать, это то, что у него есть некоторые трудности с этим полем из-за таких ключевых слов, как CHARACTER SET и COLLATE, которые вы используете. Можете ли вы воссоздать таблицу без этого и посмотреть, работает ли она? (или добавьте новое поле varchar без ключевых слов)   -  person user470714    schedule 29.09.2011
comment
@ user470714 - Хорошо, проблема решена, проблема заключалась в том, что перед фильтром у меня есть функция beforeFilter() { $this-›Security-›disabledFields = array('User.other_interest'); Я удалил это, и тогда это сработало. Я могу ударить себя. В любом случае спасибо за помощь, очень благодарен   -  person Elitmiar    schedule 29.09.2011
comment
Лол, наверное, я бы никогда не догадался об этом, но я рад, что ты это узнал.   -  person user470714    schedule 29.09.2011


Ответы (1)


И старый пост, но я хотел бы добавить это сюда....

Всегда есть

$this->Modelname->create();

в циклах, чтобы сохранить несколько записей с циклом. Чаще всего это тот случай, который вызывает ошибку.

person Kishor Kundan    schedule 24.03.2012