laravel 5.4:为继承模型返回错误的种子

时间:2017-05-05 09:57:55

标签: laravel

我已经创建了基础模型,并在laravel 5.4中从基础模型扩展了我的所有模型。当我做db:seed我得到错误

  

尝试获取非对象的属性

。谁知道为什么会这样?它是db:seed不支持模型继承。

基本型号:

    <?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Auth;

class BaseModel extends Model
{
    public static function boot()
     {
        parent::boot();
        static::creating(function($model)
        {
            $model->created_by = Auth::user()->id;
            $model->updated_by = Auth::user()->id;
        });
        static::updating(function($model)
        {
            $model->updated_by = Auth::user()->id;
        });   
        static::deleting(function($model)
        {
            $model->deleted_by = Auth::user()->id;
            $model->save();
        });
    }
}

型号:

    <?php

namespace App;

use Illuminate\Database\Eloquent\SoftDeletes;

class Bank extends BaseModel
{
    use SoftDeletes;

    public static function boot()
    {
        parent::boot();
    }
}

播种机:

    <?php

use Illuminate\Database\Seeder;
use App\Bank as Bank;

class BanksTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Bank::create( [
            'name' => 'xxxxxxxx' ,
        ] );
    }
}

1 个答案:

答案 0 :(得分:1)

可能与Auth::user()->id有关。 db:seed在终端中执行,并且没有经过身份验证的用户,因此Auth::user()将返回NULL。在设置created_byupdated_by之前进行检查。

static::creating(function($model)
{
    if (Auth::user())
    {
        $model->created_by = Auth::user()->id;
        $model->updated_by = Auth::user()->id;
    }
});

希望这会有所帮助:)