2016-07-31 5 views
0

내 그림을 저장하고 모든 논리가 내 모델 안에 있습니다. UserController.php에서Laravel Static Model 비 객체의 속성을 얻으려고 시도합니다.

:

이 User.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(); 
} 

에서 :

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)은 그러나 항상 여기 Trying to get a property of non object on line 80.

를 돌려 내 모델은 내 코드입니다 at $path = env('DIRECTORY') . $user->picBaseDir;

내 모델에 ID를 기록하려고 시도했습니다. ret 항복. 하지만 로그에 $user을 입력하면 모델이 비어있게됩니다.

모든 솔루션?

감사


솔루션을 발견. 범인은 내 사용자의 글로벌 범위입니다. 상태가 1인지 만 확인합니다. 사용자가 저장되면 상태는 여전히 0입니다.

감사합니다.

+0

은 $ 경로 = ENV ('전화 번호부')'하기 전에'$의 user'을 위해 dd하려고했다. $ user-> picBaseDir;'이 줄? –

+0

나는 이미 그것을 시도했다. 그것은 나를 돌려 준다. – 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

관련 문제