Swa*_*der 5 php frameworks phalcon
如果某个表在某些字段上有默认值并且不允许NULL,则可以期望插入脚本使用这些默认值,就像MariaDB/MySQL通常那样.例如,如果表产品具有AI字段"id",必填字段"name"和两个必填字段"active"和"featured"都默认为1,则查询
INSERT INTO products (name) VALUES ('someName');
Run Code Online (Sandbox Code Playgroud)
自动插入1作为活动和特色的值.但是,当使用Phalcon的模型时:
$product = new Products();
$product->setName('someName');
$product->save();
Run Code Online (Sandbox Code Playgroud)
返回验证错误,说"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();
Run Code Online (Sandbox Code Playgroud)
或者,在创建/更新特定字段之前一般:
use Phalcon\Db\RawValue;
class Products extends Phalcon\Mvc\Model
{
public function beforeValidationOnCreate()
{
$this->type = new RawValue('default');
}
}
Run Code Online (Sandbox Code Playgroud)
或者在生成的每个SQL INSERT中忽略这些字段:
use Phalcon\Db\RawValue;
class Products extends Phalcon\Mvc\Model
{
public function initialize()
{
$this->skipAttributesOnCreate(array('type'));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5808 次 |
| 最近记录: |