Не работает update в YiiMongoDBSuite

Выкладываем свои наработки
Ответить
MozgoEd
Сообщения: 31
Зарегистрирован: 2012.06.18, 10:51

Не работает update в YiiMongoDBSuite

Сообщение MozgoEd »

Всем привет!

Может кто-нибудь работал с YiiMongoDBSuite (вот хороший мануал по этому расширению http://canni.github.com/YiiMongoDbSuite ... pdate.html). В документации к этому расширению есть такой код:

Код: Выделить всё

$model = ModelClass::model()->find(); // Find some document to work with
 
// change some fields
$model->field1 = 1;
$model->field2 = 'value';
 
// Optional: run validation, of changed fields:
$model->validate(array('field1', 'field2'));
 
// Use partial update
$model->update(array('field1', 'field2'), true /* <- second parameter indicates to use partial update mechanism */);
Данный код обновляет ТОЛЬКО указанные поля модели. Но он у меня не работает. Ошибок нет, просто поле в БД не обновляется.

Вот мой пример:

Сама модель:

Код: Выделить всё

class Item extends EModMongoDocument {
    public $name;
    public $soname;

    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    public function getCollectionName() {
        return 'item';
    }

    public function rules() {
        return array(
            array('name, soname', 'required', 'message'=>'Warning bleat!!!!!!'),
        );
    }

    public function attributeLabels() {
        return array(
            'name'=>'Name',
            'soname'=>'Soname',
        );
    }

    public function attributeNames() {
      return array(
          'name',
          'soname',
      );
    }
}
Вызов из контроллера:

Код: Выделить всё

            $criteria = new EMongoCriteria();
            $criteria->addCond('name', '==', 'Terminator');
            $model = Item::model()->find($criteria);
            $model->name = 'Vasya';
            $model->soname = 'Pupkin';
            $model->validate(array('name', 'soname'));
            $model->update(array('name', 'soname'), true);
Пробывал все возможные версии расширения, результат такой же. Кто чем может, помогите!!!!!!
MozgoEd
Сообщения: 31
Зарегистрирован: 2012.06.18, 10:51

Re: Не работает update в YiiMongoDBSuite

Сообщение MozgoEd »

Ну и по традиции, сложившейся на этом форуме, я опять сам отвечаю на свой вопрос. Зачем я это делаю? Для того, чтобы помочь другим.

Пару часов с выпученными глазами, пошаговой отладки и методом научного тыка, я понял почему метод update не отрабатывает. А нужно всего лишь прописать _id в методе attributeNames(). Объявлять переменную типа

Код: Выделить всё

public $_id
необязательно, главное, чтобы в методе _id был. Вот так:

Код: Выделить всё

    public function attributeNames() {
      return array(
          'name',
          'soname',
          '_id',
      );
    }
Благодаря отладке в Netbeans + Xdebug я нашел эту гадость. Во время отладки в методе update класса EMongoDocument (YiiMongoDBSuite) я обнаружил, что

Код: Выделить всё

$this->_id
равен null. Да, да и эта гадость даже не ругалась, на то что _id пустой, она тупо возвращала true. Мне вот интересно, как вообще этот метод собирается, что-то обновлять если у него id записи, которую он должен обновить, вообще равен null. В мануале об этом не слова http://canni.github.com/YiiMongoDbSuite ... pdate.html. Косяки в ДНК разработчика.

Вообщем за все время разработки на Yii + YiiMongoDBSuite у меня 90% времени уходит (мать вашу) на прыганье в отладчике по шагам по всему коду этого ПРЕКРАСНОГО расширения и 10% времени на программирование. Был бы отцом разработчика этого расширения - выпорол бы. Удачи!
cioxideru
Сообщения: 26
Зарегистрирован: 2012.03.05, 17:57

Re: Не работает update в YiiMongoDBSuite

Сообщение cioxideru »

YiiMongoDBSuite сырой конечно, я тоже кучу времени на работу с ним. Впечатления смешанные.
Может кто подскажет более качественный ext ?
Аватара пользователя
RSol
Сообщения: 325
Зарегистрирован: 2010.05.07, 08:36
Откуда: Северодонецк, Украина
Контактная информация:

Re: Не работает update в YiiMongoDBSuite

Сообщение RSol »

Ребята!

Canni очень быстро реагирует на вопросы и замечания - напишите ему.
MozgoEd
Сообщения: 31
Зарегистрирован: 2012.06.18, 10:51

Re: Не работает update в YiiMongoDBSuite

Сообщение MozgoEd »

cioxideru писал(а):YiiMongoDBSuite сырой конечно, я тоже кучу времени на работу с ним. Впечатления смешанные.
Может кто подскажет более качественный ext ?
Наверное другого более менее сносного просто не существует. Это лучшее из того, что есть.
Аватара пользователя
r3verser
Сообщения: 195
Зарегистрирован: 2012.04.01, 17:29
Откуда: Киев

Re: Не работает update в YiiMongoDBSuite

Сообщение r3verser »

Кто-то юзает это расширение на продакшене, багов нету?
Спрашиваю, потому что автор его забросил года два назад, а аналогов вроде нормальных не нашел. Если есть, киньте ссылку пожалуйста.
Aleks
Сообщения: 6
Зарегистрирован: 2013.05.15, 15:35

Re: Не работает update в YiiMongoDBSuite

Сообщение Aleks »

Присоединяюсь к вопросу r3verser "Кто-то юзает это расширение на продакшене, багов нету?"
Реально ли на продакшене его использовать? Или лучше в чистом php работать с Mongo?
Есть ли у кого жизненный опыт использования YiiMongoDBSuite?
Ответить