我已经创建了基础模型,并在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' ,
] );
}
}
答案 0 :(得分:1)
可能与Auth::user()->id
有关。 db:seed
在终端中执行,并且没有经过身份验证的用户,因此Auth::user()
将返回NULL
。在设置created_by
和updated_by
之前进行检查。
static::creating(function($model)
{
if (Auth::user())
{
$model->created_by = Auth::user()->id;
$model->updated_by = Auth::user()->id;
}
});
希望这会有所帮助:)