2017-02-05 13 views
0

laravel 4에서 laravel 5로 마이그레이션합니다. Laravel 5 User Model과 호환되도록 User Model을 수정했습니다. Laravel 4의 사용자 모델은 같다 :Laravel 5의 "User Model"기능이 작동하지 않습니다.

use Illuminate\Auth\UserInterface; 
use Illuminate\Auth\Reminders\RemindableInterface; 

class User extends Eloquent implements UserInterface, RemindableInterface { 
    // some model relation functions.. 
    ... 
    public function getLocationId() 
    { 
     return $this->location_id; 
    } 
} 

나는 그것을 수정하고 새로운 사용자 모델은 지금과 같다 :

namespace App\Models; 

use Illuminate\Auth\Authenticatable; 
use Illuminate\Auth\Passwords\CanResetPassword; 
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 

use Illuminate\Database\Eloquent\Model as Eloquent; 

class User extends Eloquent implements AuthenticatableContract, CanResetPasswordContract { 

    use Authenticatable, CanResetPassword; 
    // some model relation functions (some changes for namespace) 
    ... 
    public function getLocationId() 
    { 
     return $this->location_id; 
    } 
} 

그러나, getLocationId 방법은 지금 문제가있다. 다음 행은 오류를 발생시킵니다.

$auth_location_id = Auth::user()->getLocationId(); 

이 오류입니다 :

BadMethodCallException in Builder.php line 2508: 
Call to undefined method Illuminate\Database\Query\Builder::getLocationId() 

가 어떻게 5 laravel하는 방법 호환 할 수 있습니까? 감사합니다 ..

업데이트 :

$auth_location_id = Auth::user()->getLocationId; 작동하지만이 비어 반환!

아래의 행은 올바르게 작동합니다.

use Illuminate\Foundation\Auth\User as Authenticatable; 

을 그런 다음 내 모델이 있습니다 :

use Illuminate\Foundation\Auth\User as Authenticatable; 
class User extends Authenticatable 
{ 
    public function getLocationId() 
    { 
     return $this->location_id; 
    } 
} 

그래서 내가 안전 할 수

$auth_user_id = Auth::user()->getAuthIdentifier(); 
+0

laravel의 버전은 무엇으로 이어질 수

PS: this is just an illustration of how I currently use it in Laravel 5.2.*.

희망, 당신은 업데이트하려고? 5.4? 그렇다면이 링크 [https://github.com/laravel/laravel/blob/master/app/User.php](https://github.com/laravel/laravel/blob/master/app/User.php)를 따르십시오.) – zgabievi

+0

@zgabievi 예, 5.4입니다. – horse

답변

0
나의 이해함으로써

및 Laravel 짧은 경험, 내가 모두 사용하는 단지입니다 적어도, 그것은 나를 위해 일하기 때문에 모든 계약은 ....\User이 사용될 때 불리는 정면에서 연장되어야한다고 생각합니다. 이 도움이 또는이 솔루션 :