2016-07-31 89 views
0

我想保存我的圖片,並且所有邏輯都在我的模型中。但我的模型總是返回Trying to get a property of non object on line 80.Laravel靜態模型試圖獲取非對象的屬性

這裏是我的代碼:

在UserController.php:

DB::beginTransaction(); 
try{ 
    $user = new User($request->all()); 
    if($user->save()){ 
     User::savePicture($user->id, $request->cover); 
    } 
    DB::commit(); 
} catch(\Exception $e){ 
    DB::rollback(); 
} 

在user.php的(模型):

protected $picBaseDir = 'images/users/pic/'; 

public static function savePicture($id, UploadedFile $file) 
{ 
    $user = static::find($id); 

    $path = env('DIRECTORY') . $user->picBaseDir; 
    makePath($path); 

    // all other logic to move the image, etc 
} 

80號線在$path = env('DIRECTORY') . $user->picBaseDir;

我試過在我的模型中記錄id,它ret正確地甕。但是當我嘗試在內部模型中登錄$user時,它將返回空。

任何解決方案?

由於


找到了解決辦法。罪魁禍首是我的全球範圍內的用戶。它只檢查狀態是否。當用戶保存時,狀態仍爲0.

謝謝。

+0

你有沒有嘗試之前'$ PATH = ENV( '目錄'),以DD'$ user'。 $ user-> picBaseDir;'這一行? – 2016-07-31 11:20:18

+0

我已經試過了。它返回我null。 – ssuhat

回答

0

其實,我沒有發現你的代碼有問題,但我認爲沒有理由使用靜態函數。讓用戶自己保存圖片。

// UserController.php 

$user = new User($request->all()); 
if($user->save()){ 
    $user->savePicture($request->cover); 
} 

// User.php 
protected $picBaseDir = 'images/users/pic/'; 

public function savePicture(UploadedFile $file) 
{ 
    $path = env('DIRECTORY') . $this->picBaseDir; 
    makePath($path); 

    // all other logic to move the image, etc 
} 
+0

我試圖刪除它,但仍然返回相同。我已更新我的問題。我忘記把DB :: beginTransaction放在我的問題上。 – ssuhat

-1
// UserController.php 

$user = new User($request->all()); 
if($user->save()){ 
    User::savePicture($user->id, $request->cover); 
} 

// User.php 
protected $picBaseDir = 'images/users/pic/'; 

public static function savePicture($id, UploadedFile $file) 
{ 
    $user = User::find($id); 

    $path = env('DIRECTORY') . $user->picBaseDir; 
    makePath($path); 

    // all other logic to move the image, etc 
} 
+0

仍然讓我試圖獲得非客體的屬性。我已更新我的問題。我忘記把DB :: beginTransaction放在我的問題上。 – ssuhat

相關問題