Phalcon Framework: невозможно сохранить ненужные строки в базе данных

Я использую фреймворк Phalcon для PHP, и я хотел бы сохранить свою форму в базе данных, все работает как положено, но я не могу сохранить пустые строки в некоторых (не обязательных) полях.

Как сохранить необязательное поле? Каждый раз, когда я сохраняю необязательные поля без ввода, я получаю сообщение об ошибке типа «поле фамилии обязательно».

Кто угодно?

Извините, мой английский не очень хорош, я учусь...


Мой код контроллера:

$this->view->disable();
$usuario = new Usuarios();

    $usuario->usuario = $this->request->getPost("usuario");
    $usuario->email = $this->request->getPost("email");
    $usuario->senha = $this->request->getPost("senha");
    $usuario->nome = $this->request->getPost("nome");
    $usuario->sobrenome = $this->request->getPost("sobrenome");
    $usuario->icone = $this->request->getPost("icone");
    $usuario->fixo = $this->request->getPost("fixo");
    $usuario->celular = $this->request->getPost("celular");
    $usuario->tipo = $this->request->getPost("tipo");

    $usuario->save();

И у меня есть базовые проверки в моей модели...


person Thiago Yoithi    schedule 29.12.2013    source источник


Ответы (4)


Вы можете выбрать одно из этих решений, предложенных на Как заставить модели использовать значения по умолчанию в Phalcon PHP Framework?

Последнее и простое решение:

$usuario->usuario = $this->request->getPost("usuario") || "";
person Sir Z.    schedule 08.01.2014
comment
Я нашел решение, отключив проверку пустого поля Phalcon по умолчанию и вставив все необходимые поля непосредственно в функцию проверки модели. Я не проверял ваше решение, но это хорошо, я не забуду использовать || ; в следующий раз! Спасибо! - person Thiago Yoithi; 09.01.2014

Поздний ответ, но может кому пригодится. Если вы хотите, чтобы phalcon игнорировал определенные поля, вам нужно использовать skipAttributes():

Пример:

class Usuarios extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
    $this->skipAttributes(array('field1', 'field2'));
    }
}

Вот ссылка на документацию: http://docs.phalconphp.com/en/latest/reference/models.html#skipping-columns

person Rafi    schedule 09.02.2015
comment
Спасибо Вам за Ваш вклад! Я уже решил эту проблему, но это может помочь кому-то еще с этой проблемой. - person Thiago Yoithi; 10.02.2015

Если вы хотите сохранить пустую строку для некоторых полей (одна из причин такой ошибки, как «поле фамилия обязательно»), вы можете использовать метод модели Phalcon allowEmptyStringValues:

class Robots extends Model
{
    public function initialize()
    {
        $this->allowEmptyStringValues(['usuario', 'someelse', 'someother']);
    }
}

для разрешения сохранения пустых строк для полей, перечисленных вручную.

Также проверьте свою модель Usuarios (у нее есть поле с именем «фамилия») и атрибуты поля NULL / NOT NULL структуры вашей базы данных.

person FlameStorm    schedule 29.04.2018

Это может привести к сбою, потому что вы пытаетесь сохранить NULL вместо пустой строки. К сожалению, я не могу ответить в качестве комментария из-за требований к репутации, но не могли бы вы опубликовать содержимое своей модели Usuarios? Мне нужно посмотреть, как выглядят ваши проверки.

person Mike G.    schedule 03.01.2014