Yii eadvancedarbehavior + postgres?

Рейтинг: 0Ответов: 0Опубликовано: 23.03.2015

Решил создавать проект на постгресе, но вот пробую подключить связь многие ко многим

http://des1roer.blogspot.ru/2015/03/yii-yii-for-dummies-chtmlcheckboxlist.html

и получаю

CDbCommand не удалось исполнить SQL-запрос: SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "ignore"
LINE 1: insert ignore into t_mim(id_engine , id_book) values ('1', '... ^. The SQL statement executed was: insert ignore into t_mim(id_engine , id_book) values ('1', '1'),('1', '2')

Естсественно, в PG нет никакого ignore. Перелопачивать за разработчиков это расширение ни навыков, ни желания.

Кто-нибудь пользовался бехавиором в связке с постгрей? Про мускул не спрашивайте.

Кстати, вот мой вырвиглазный велосипед:

_form.php

   <?php echo CHtml::label('комплектность', 'complect'); ?>
    <?php
    $criteria = new CDbCriteria();
    $criteria->addInCondition('handbook_h_id', array('4'));
    $type_list = CHtml::listData(Handbook::model()->findAll($criteria), 'h_id', 'h_value');

    if (isset($model->e_id))
    {
        $arr = Mim::model()->findAll("engine_e_id=:id", array(':id' => $model->e_id));
    }

    if (isset($arr))
    {
        for ($i = 0; $i < count($arr); $i++)
        {
            $arr_bit[] = $arr[$i]->handbook_h_id;
        }
    }
    else
        $arr_bit = array();

    echo CHtml::checkBoxList('im_id', $arr_bit, $type_list, array(
        'template' => '{input} {labelTitle}',
        'class' => 'chclass',
            )
    ); //просто рисуем чекбокслитс из базы
    ?>

controller

public function actionCreate()
{
    $model = new Engine;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if (isset($_POST['Engine']))
    {
        $model->attributes = $_POST['Engine'];
        if ($model->save())
        {                
            if (isset($_POST['im_id']))
            {
                $command = Yii::app()->db->createCommand();
                foreach ($_POST['im_id'] as $check)
                {
                    $Ids = $_POST['im_id'];
                };
                for ($i = 0; $i < count($Ids); $i++)
                {
                    $command->insert('mim', array(
                        'engine_e_id' => $model->e_id, ////
                        'handbook_h_id' => (int) $Ids[$i], ////
                    ));
                }
            }

            $this->redirect(array('view', 'id' => $model->e_id));
        }
    }

    $this->render('create', array(
        'model' => $model,
    ));
}

/**
 * Updates a particular model.
 * If update is successful, the browser will be redirected to the 'view' page.
 * @param integer $id the ID of the model to be updated
 */
public function actionUpdate($id)
{
    $model = $this->loadModel($id);

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);
    if (isset($_POST['Engine']))
    {
        $model->attributes = $_POST['Engine'];

        if ($model->save())
        {
            $command = Yii::app()->db->createCommand();
            $command->delete('mim', 'engine_e_id=:id', array(':id' => $model->e_id));
            if (isset($_POST['im_id']))
            {
                foreach ($_POST['im_id'] as $check)
                {
                    $Ids = $_POST['im_id'];
                };
                for ($i = 0; $i < count($Ids); $i++)
                {
                    $command->insert('mim', array(
                        'engine_e_id' => $model->e_id, ////
                        'handbook_h_id' => (int) $Ids[$i], ////
                    ));
                }
            }
            $this->redirect(array('view', 'id' => $model->e_id));
        }
    }

    $this->render('update', array(
        'model' => $model,
    ));
}

Ответы

Ответов пока нет.