php - 如何使模型在 Phalcon PHP Framework 中使用默认值?

标签 php frameworks phalcon

如果一个表在某些字段上有默认值并且不允许 NULL,那么人们会期望插入脚本使用这些默认值,就像 MariaDB/MySQL 通常那样。例如,如果表 products 有一个 AI 字段“id”,一个必填字段“name”和两个必填字段“active”和“featured”,它们都默认为 1,那么查询

INSERT INTO products (name) VALUES ('someName');

自动插入 1 作为 active 和 featured 的值。然而,当像这样使用 Phalcon 的模型时:

$product = new Products();
$product->setName('someName');
$product->save();

返回验证错误,指出“active”和“featured”是必需的。

我是否应该在模型生成期间提供一个标志,以便 Phalcon 工具收集默认值并将其输入到模型类中,或者是否有其他方法让 Phalcon 在找到时自动使用默认值?我认为最好的方法就是忽略未设置的字段。我可以让模型做到这一点吗?

最佳答案

您可以使用原始数据库值来避免这种情况,在特定的插入中:

<?php

use Phalcon\Db\RawValue;

$product = new Products();
$product->setName('someName');
$product->setType(new RawValue('default')); //use default here
$product->save();

或者,一般在创建/更新特定字段之前:

use Phalcon\Db\RawValue;

class Products extends Phalcon\Mvc\Model
{
    public function beforeValidationOnCreate()
    {
        $this->type = new RawValue('default');
    }
}

或者忽略生成的每个 SQL INSERT 中的这些字段:

use Phalcon\Db\RawValue;

class Products extends Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->skipAttributesOnCreate(array('type'));
    }
}

关于php - 如何使模型在 Phalcon PHP Framework 中使用默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15951959/

相关文章:

php - 如何在 php 中使用 onclick 事件重定向页面?

frameworks - 要求用户安装 Mono 框架是不好的做法吗?

xcode - 如何让我的代码发现嵌入式实用程序?

c# - 调整检查并转换为值

post - 带有 JavaScript 确认对话框的 Phalcon PHP 发布链接

php - Phalcon 设置 View 模板

php - 需要修改base64

php - 使用 Laravel 上传和显示保存在 PostgreSQL 中的 PDF 文件

php - 试图理解命名空间编码

apache - Htaccess mod 重写不起作用