Laravel静态模型试图获取非对象

时间:2016-07-31 11:03:23

标签: php laravel

我想保存我的照片,所有逻辑都在我的模型中。但我的模型总是返回Trying to get a property of non object on line 80.

这是我的代码:

在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(Model)中:

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,它正确返回。但是当我在模型中尝试log $user时,它返回空。

任何解决方案?

由于

找到解决方案。罪魁祸首是我在用户内部的全球范围。它仅检查状态是否为1.保存用户时,状态仍为0.

感谢。

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:-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
}