2016-07-20 4 views
0

У меня есть 3 модели, пользователя, хост и URL

В принципе, URL имеет поле host_id, так что я мог бы связать 2 модели вместе.

Вот мои модели:

пользователя Модель(user_urls просто сводная таблица, содержащая user_id и url_id)

class User extends Authenticatable 
{ 
    ... irrelevant codes here... 

    public function urls(){ 
    return $this->belongsToMany('\App\Models\SEO\Url', 'user_urls', 'user_id', 'url_id')->withTimestamps(); 
    } 
} 

хоста-модель:

class Host extends Model 
{ 

protected $fillable = [ 
    'friendly_name', 
    'hosting_cost', 
    'login_url',  
    'username', //encrypted field 
    'password' //encrypted field 
    ]; 

...some irrelevant codes here... 

    -- MUTATORS/ACCESSORS--- 

    public function setPasswordAttribute($value){ 
    $this->attributes['password'] = \Crypt::encrypt($value); 
    } 

    public function getPasswordAttribute($value){ 
     return $this->attributes['password'] = \Crypt::decrypt($value); 
    } 

... 

} 

U RL модель:

class Url extends Model 
{ 
    protected $table = 'urls'; 
    protected $with = ['host']; 


    public function host(){ 
     return $this->belongsTo('\App\Models\SEO\Host', 'host_id'); 
    } 

} 

Теперь, когда я пытаюсь сделать это на контроллере,

return $this->user->urls(); 

Это возвращает исключение

in BaseEncrypter.php line 44 
at BaseEncrypter->getJsonPayload('password') in Encrypter.php line 96 
at Encrypter->decrypt('password') in Facade.php line 218 
at Facade::__callStatic('decrypt', array('password')) in Host.php line 69 
at Crypt::decrypt('password') in Host.php line 69 
at Host->getPasswordAttribute('password') in Model.php line 2782 
at Model->mutateAttribute('password', 'password') in Model.php line 2794 
at Model->mutateAttributeForArray('password', 'password') in Model.php line 2529 
at Model->attributesToArray() in Model.php line 2490 
at Model->toArray() in Model.php line 2600 
at Model->relationsToArray() in Model.php line 2492 
at Model->toArray() in Model.php line 2480 
at Model->jsonSerialize() in Collection.php line 1005 
at Collection->Illuminate\Support\{closure}(object(Url)) 
at array_map(object(Closure), array(object(Url), object(Url), object(Url))) in Collection.php line 1013 
at Collection->jsonSerialize() in Collection.php line 1024 
at Collection->toJson() in Response.php line 68 
at Response->morphToJson(object(Collection)) in Response.php line 46 
at Response->setContent(object(Collection)) in Response.php line 197 
at Response->__construct(object(Collection)) in Router.php line 1030 
at Router->prepareResponse(object(Request), object(Collection)) in ControllerDispatcher.php line 95 
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Authenticate.php line 28 
at Authenticate->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(Authenticate), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 96 
at ControllerDispatcher->callWithinStack(object(UsersUrlController), object(Route), object(Request), 'api_filter') in ControllerDispatcher.php line 54 
at ControllerDispatcher->dispatch(object(Route), object(Request), '\App\Http\Controllers\Users\UsersUrlController', 'api_filter') in Route.php line 174 
at Route->runController(object(Request)) in Route.php line 140 
at Route->run(object(Request)) in Router.php line 703 
at Router->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in VerifyCsrfToken.php line 64 
at VerifyCsrfToken->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49 
at ShareErrorsFromSession->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 62 
at StartSession->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59 
at EncryptCookies->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in Router.php line 705 
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 678 
at Router->dispatchToRoute(object(Request)) in Router.php line 654 
at Router->dispatch(object(Request)) in Kernel.php line 246 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44 
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in Kernel.php line 132 
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99 
at Kernel->handle(object(Request)) in index.php line 59 

я могу ясно видеть, что он пытается расшифровать строку «пароль», конечно, она выкинет ошибку просто потому, что она не зашифрована, но в моей базе данных она зашифрована. Почему он уже зашифрован до дешифрования? Это возможная ошибка?

Спасибо!

+0

Вы можете попробовать обновить свой getPasswordAttribute) '' метод (только 'вернуться \ Crypt :: Расшифровать ($ значение); ' – Sam

ответ

1

Может быть, вы можете попробовать:

public function urls(){ 
return $this->belongsToMany('\App\Models\SEO\Url', 'user_urls', 'user_id', 'url_id'); 
} 

И называют свойство как это:

$user=User->with('urls')->where('id',$id)->first(); 
$user->urls->create_at;