Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要Phalcon在场_Php_Mysql_Orm_Phalcon - Fatal编程技术网

Php 需要Phalcon在场

Php 需要Phalcon在场,php,mysql,orm,phalcon,Php,Mysql,Orm,Phalcon,我对数据库中的更新记录有问题。 以下是错误: Phalcon\Mvc\Model\Message Object ( [_type:protected] => PresenceOf [_message:protected] => field1 is required [_field:protected] => private [_model:protected] => [_code:protected] => 0 ) Phal

我对数据库中的更新记录有问题。 以下是错误:

Phalcon\Mvc\Model\Message Object
(
    [_type:protected] => PresenceOf
    [_message:protected] => field1 is required
    [_field:protected] => private
    [_model:protected] => 
    [_code:protected] => 0
)
Phalcon\Mvc\Model\Message Object
(
    [_type:protected] => PresenceOf
    [_message:protected] => field2 is required
    [_field:protected] => online
    [_model:protected] => 
    [_code:protected] => 0
)
这是数据库架构:

CREATE TABLE `data`
(
    `id`          BINARY(16)   NOT NULL,
    `id_second`   BINARY(16)   NOT NULL,
    `field1`      TINYINT(1)   NOT NULL DEFAULT 1,
    `field2`      TINYINT(1)   NOT NULL DEFAULT 1,
    `field3`      INTEGER      NOT NULL DEFAULT 0,
    `name`        VARCHAR(255) NOT NULL DEFAULT "",

    PRIMARY KEY (`id`, `id_second`),
    FOREIGN KEY (`id_second`) REFERENCES `data2` (`id`)
);
我可以创建新记录,但无法更新它。 记录查找后,我尝试替换值并更改它:

$record->name    = $save['name'];
$record->field1  = $save['field1'];
$record->field2  = $save['field2'];

$record->update();
但这会显示上面给出的错误。我不知道为什么,因为当我显示
$record->field1
$record->field2
时,它们不是空的,而是真的或假的(这就是为什么数据库中的
TINYINT

模型中没有验证规则,id和id_second字段设置为属性

我试着这样做:

    $result = Di::getDefault()->getModelsManager()->executeQuery('
        UPDATE \Pulsar\Model\Data SET
            name = :name:,
            field1 = :field1:,
            field2 = :field2:
        WHERE
            id = :id: AND id_second = :id_d2:
        ', [
            'id'     => $this->id,
            'id_d2'  => $this->id_second,
            'name'   => $this->name,
            'field1' => $this->field1,
            'field2' => $this->field2
        ], [
            'id'     => \PDO::PARAM_STR,
            'id_d2'  => \PDO::PARAM_STR,
            'name'   => \PDO::PARAM_STR,
            'field1' => \PDO::PARAM_INT,
            'field2' => \PDO::PARAM_INT
        ]
    );
但结果是一样的。 然而,这是可行的:

$v1 = $record->field1 ? 1 : 0;
$v2 = $record->field2 ? 1 : 0;
$record->getReadConnection()->execute("
    UPDATE data SET
        name = '{$record->name}',
        field1 = {$v1},
        field2 = {$v2}
    WHERE
        id = '{$record->id}' AND id_second = '{$record->id_second}'
");

如何使用
update()
save()
函数实现相同的功能?我提醒您,
create()
delete()
函数工作正常。

好的。。。我明白它为什么不起作用了。 我正在发布
true
/
false
值,但它需要整数值

因此,传递
0
/
1
而不是
true
/
false
是正确的