2016-11-04 4 views
2

Я с помощью Phalcon Framework и PostgreSQLВставить массив в заблуждение PostGreSQL

Я пытаюсь вставить массив в базу данных колонного типа: varchar[]:

array(4) { [0]=> string(1) "1" [1]=> string(1) "6" [2]=> string(1) "9" [3]=> string(2) "12" } 

Но получить следующее сообщение об ошибке:

SQLSTATE [HY093]: Недопустимый номер параметра: параметр не определен

Пожалуйста, помогите мне исправить это, пожалуйста,

+2

Пожалуйста, поделитесь своим кодом. Невозможно помочь вам без какого-либо дополнительного контекста. – Mureinik

+0

Покажите нам свой код запроса – Timothy

+0

Не уверен, что этот код должен быть, но в Postgres вам необходимо указать массив следующим образом: 'array ['1', '6', '9', '12']' –

ответ

0

Вот моя модель:

<?php 
namespace App\Models; 

use Phalcon\Mvc\Model; 
use Phalcon\Validation; 
use Phalcon\Validation\Validator\Uniqueness; 

class Document extends Model 
{ 

    public $id; 
    public $relatedocument; 

    public function getSource() 
    { 
     return "document"; 
    } 

===== Форма ======

<?php 
namespace App\Modules\Backend\Forms; 

use Idoc\Models\Document; 
use Phalcon\Forms\Form; 
use Phalcon\Forms\Element\Select; 

class DocumentForm extends Form 
{ 
    public function initialize($entity = null, $options = null) 
    { 
     $data = Document::find(); 
     $this->add(new Select('relatedocument[]', $data, [ 
      'using' => [ 
       'id', 
       'name' 
      ], 
      'useEmpty' => true, 
      'emptyText' => '....', 
      'multiple' => 'multiple', 
      'class' => 'form-control search-select' 
     ])); 
    } 

===== AddAction ======

public function addAction() 
    { 
     if ($this->request->isPost()) { 
      $doc = new Document(); 
      $doc->relatedocument = $this->request->getPost('relatedocument'); 
      if (!$doc->save()) { 
      $this->flash->error($doc->getMessages()); 
      } else { 
       $this->flash->success("Văn bản đã được tạo"); 
       Tag::resetInput(); 
      }  
     } 
     $this->view->form = new DocumentForm(null); 
    } 
+0

[обновите свой вопрос] (http://stackoverflow.com/posts/40421287/edit) вместо отправки ответа. нажмите кнопку [edit] (http://stackoverflow.com/posts/40421287/edit) под своим вопросом. – Timothy

+0

в вашей форме вы называете свой элемент 'relatedocument []', но в вашем контроллере вы запрашиваете 'relatedocument' – Timothy

Смежные вопросы