2016-07-31 60 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

相关问题