Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.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 为什么基于默认定义的Laravel雄辩模型属性在保存后为空?_Php_Laravel_Laravel 5.1 - Fatal编程技术网

Php 为什么基于默认定义的Laravel雄辩模型属性在保存后为空?

Php 为什么基于默认定义的Laravel雄辩模型属性在保存后为空?,php,laravel,laravel-5.1,Php,Laravel,Laravel 5.1,使用非常简单的模型: <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Example extends Model { } 这将输出以下内容,请注意,输出已跳过状态字段。还要注意,字段abc丢失 array (size=4) 'foo' => string 'BAR' (length=3) 'id' => int 19 如果我重新加载模型,使用$exam

使用非常简单的模型:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Example extends Model
{

}
这将输出以下内容,请注意,输出已跳过状态字段。还要注意,字段
abc
丢失

array (size=4)
    'foo' => string 'BAR' (length=3)
    'id' => int 19
如果我重新加载模型,使用
$example1->fresh()
,我会得到预期的输出:

array (size=4)
    'foo' => string 'BAR' (length=3)
    'abc' => null,
    'status' => int 1,
    'id' => int 19

有没有办法避免使用
fresh
方法?在引擎盖下,fresh是去db的又一次旅程

雄辩的模型有
getOriginal()
方法返回模型的原始属性值

刚刚测试了它,它返回所有带值的列。因此,它将是:

$example1 = new App\Models\Example();
$example1->foo = "BAR";
$example1->save();

var_dump($example1->getOriginal());

您可以尝试按照其他帖子中的建议,在您的模型中另外(或专门)设置默认值:

这在Laravel 5.1安装中适用:

class Example extends Model
{
    protected $attributes = [
        'status' => 1
    ];
}

但是,如果你认为你的DB是唯一的真实来源(并且设置默认值),那么从它得到一个新的实例可能更安全。如果您查看Eloquent的save(),您会发现它没有获取更新/插入的记录(而且,有些数据库如mysql不支持在一次调用中插入/更新时返回记录)

$example1 = new App\Models\Example();
$example1->foo = "BAR";
$example1->save();

var_dump($example1->getOriginal());
class Example extends Model
{
    protected $attributes = [
        'status' => 1
    ];
}