2017-05-05 94 views
0

我已經創建了基礎模型,並將所有模型從基本模型擴展到laravel 5.4。當我做DB:種子我得到錯誤laravel 5.4:播種繼承模型返回錯誤

試圖讓非對象

的財產。任何人都知道爲什麼發生?它是db:種子不支持模型繼承。

基本型號:

<?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

如果你沒有抑制錯誤日誌,任何錯誤都來自工匠CLI去'存儲/日誌/ laravel.log'。只是說。 – Chay22

回答

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; 
    } 
}); 

希望這有助於:)