www.state-it.info

Gran base de respuestas a las preguntas de los desarrolladores
Header decor

Como grabar los datos de un controlador en diferentes tablas en yii2?

AlexAll 2018-10-10 11:07:09

hola, hay dos tipos de tabla
post[id, title text]
site[id, title, link, postid]

Cuando la creación de ayuno hay dos campos para agregar el sitio, con el texto y el enlace que se muestra mediante la extensión de https://github.com/unclead/yii2-multiple-input

en el modelo de Post.php creado una variable public $site y la validación de pruebas de que es la matriz

[['site'], 'exist', 'allowArray' => true],


en вьшке _form hago el campo

<?= $form->field($model, 'site')->widget(MultipleInput::className(), [
    
    'columns' => [
        [
            'name'  => 'title',
            'title' => 'Название сайта',
            'enableError' => true,
        ],
        
        [
            'name'  => 'link',
            'title' => 'Ссылка',
            'enableError' => true,
        ]
    ]
 ]);
?>


en un controlador de

public function actionCreate()
    {
        $model = new Offers();
         if ($model->load(Yii::$app->request->post())) {
             if($model->save()) {
                foreach ($model->site as $var){
                $site = new Site();    
                $site->title = $var->title;
                $site->link = $var->link;
                $site>post_id = $model->id;
                $site->save();                
                
                }
               
             }
             
                    return $this->redirect(['view', 'id' => $model->id]);
                          
        }
        
        return $this->render('create', [
            'model' => $model,

        ]);
    }


Tratando de grabar produce un error en este lugar if($model->guardar()) {

motor de Exception – yii\db\Exception
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual que corresponde a su MySQL server version for the right syntax to use near '[[]]) FROM `post` WHERE `post`.`site`=NULL' at line 1
The SQL being executed fue la siguiente: SELECT COUNT(DISTINCT [[]]) FROM `post` WHERE `post`.`site`=NULL

Error Info: Array
(
[0] => 42000
[1] => 1064
[2] => You have an error in your SQL syntax; check the manual que corresponde a su MySQL server version for the right syntax to use near '[[]]) FROM `post` WHERE `post`.`site`=NULL' at line 1
)


Lo que no es?

Total answers: 1

chelkaz 2018-10-10 11:31:18

Trate así:
$model->save(false);
En lugar de if($model->guardar())

AlexAll 2018-10-10 11:50:45

Y esto es correcto omitir el error? en el trabajo será de influir?


chelkaz 2018-10-11 22:22:45

AlexAll, Probar, puede que usted es el problema? https://yiiframework.ru/forum/viewtopic.php?t=7592


Preguntas relacionadas:

Footer decor

© www.state-it.info | Base of answers to questions for developers and programmers.