Laravel - 模型以空属性值(NULL)保存到数据库

Bla*_*ack 3 php laravel laravel-5

我尝试将我的模型保存到数据库中。模型保存到数据库中,但属性值未设置并保持为空。

在此处输入图片说明

这是一个只有几个属性的小模型:

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Unit extends Model
{
    public $fillable = ['name', 'description', 'created_at', 'updated_at'];

    protected $table = 'units';

    // Allowed fields from forms
    // protected $guarded = ['ic'];

    /**
     * @var string
     */
    public $name = NULL;

    /**
     * @var string
     */
    public $description = NULL;
}
Run Code Online (Sandbox Code Playgroud)

控制器存储功能:

/**
 *
 * @param Request $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    $this->validate(request(), [
        'name' => 'required|max:80|regex:/^[\pL\s\-]+$/u',    //regex: only allows letters, hyphens and spaces explicitly',
        'description' => 'required',
        'image' => 'required|image',
    ]);

    $unit = new Unit();

    $unit->description = $request->description;
    $unit->name = $request->name;

    echo $unit->description . PHP_EOL;  //Outputs "example description"
    echo $unit->name . PHP_EOL;   //Outputs: "example name"

    $unit->save();
    ...
Run Code Online (Sandbox Code Playgroud)

我很困惑,它应该工作。我究竟做错了什么?

更新:

对象$unitsave()

Unit {#190 ?
  +fillable: array:2 [?
    0 => "name"
    1 => "description"
  ]
  #table: "units"
  +name: "example name"
  +description: "example description"
  #connection: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: true
  #attributes: array:3 [?
    "updated_at" => "2017-03-01 10:18:59"
    "created_at" => "2017-03-01 10:18:59"
    "id" => 27
  ]
  #original: array:3 [?
    "updated_at" => "2017-03-01 10:18:59"
    "created_at" => "2017-03-01 10:18:59"
    "id" => 27
  ]
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #events: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #guarded: array:1 [?
    0 => "*"
  ]
}
Run Code Online (Sandbox Code Playgroud)

Fat*_*mah 5

删除这个:

   /**
 * @var string
 */
public $name = NULL;

/**
 * @var string
 */
public $description = NULL;
Run Code Online (Sandbox Code Playgroud)

  • 是的,这意味着您直接从模型设置这些属性的值。因此,如果您保存,它将获取这些值 (NULL) 而不是您发送的值。它也会影响数据检索。如果您已将数据保存在数据库中,然后将这些行添加回来,当您要检索时,这些值将为空。 (2认同)