Ale*_*ldi 2 php laravel eloquent laravel-5
null保存时我将所有空字段设置为
使用OctoberCMS模型事件beforeSave(相当于Laravel模型保存)
public function beforeSave()
{
// $this => the model
foreach ( $this->toArray() as $name => $value )
{
if ( empty( $value ) ) {
$this->{$name} = null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当字段具有在数据库(mysql)上定义的默认值时,例如:
$table->integer('value')->default(1);
Run Code Online (Sandbox Code Playgroud)
我需要获得当前模型的所有可空或不可空字段的数组.
这是怎么回事?
Laravel/Eloquent对数据库的结构一无所知.假设您实现的任何操作,数据库结构都为它们做好了准备.
您可以查询数据库以获取有关列的信息.对于MySQL,你需要运行
show columns from <table_name>;
Run Code Online (Sandbox Code Playgroud)
这将导致向数据库发送其他查询.
一个更好的选择,在我看来,是到了这样的信息存储在模型类,例如在
protected $notNullable = ['field1', 'field2'];
Run Code Online (Sandbox Code Playgroud)
以类似于$ fillable或$ guarded字段的方式存储.在编写模型时,您应该知道哪些列是哪些列nullable,哪些列不是,因此它应该是最简单的解决方案.
| 归档时间: |
|
| 查看次数: |
1702 次 |
| 最近记录: |