2017-06-06 83 views
0

我想允许用户更新他们的个人资料页面上创建的,但是我得到一个错误信息说我试图尝试给非对象的属性非对象的属性:Laravel尝试分配

enter image description here

但是用户和twitter确实有价值。

在数据库字段中被称为twitter_personal,当然id是一个id。

控制器:

function updateProfile(Request $request) { 
    $user = Auth::id(); 
    $twitter = $request->input('twitter'); 
    $user->twitter_personal = $twitter; 
    $user->save(); 
    if($user->save()) { 
    $message = 'Success'; 
    }else{ 
    $message = 'Error'; 
    } 
    return redirect()->back()->withInput()->with('message', $message); 

}

形式:

  <form class="form-horizontal" role="form" method="POST" action="{{ action('[email protected]') }}"> 
       {{ csrf_field() }} 
       <div class="form-group{{ $errors->has('url') ? ' has-error' : '' }}"> 
        <label for="twitter" class="col-md-4 control-label">Twitter</label> 
       <div class="col-md-6"> 
       <input id="twitter" type="text" class="form-control" name="twitter"> 
       @if ($errors->has('url')) 
       <span class="help-block"> 
        <strong>{{ $errors->first('url') }}</strong> 
       </span> 
       @endif 
     </div> 
    </div> 

所以这里的问题,我该怎么解决呢?有没有更好的方法呢?如果是的话请举个例子!

+0

'$ user'是'Auth :: id()',它是一个id。它应该是'Auth :: user()' – apokryfos

+0

true,工作正常。这个功能是不错的做法吗?或者使用其他方法可以更好地完成//编辑将其作为答案,因此我可以标记它 – Przemek

+1

有些人认为使用外墙不是好习惯。我认为laravel很好。如果你想避免使用'Auth'外观,你可以这样做:'$ request-> user()'而不是 – apokryfos

回答

2

功能Auth::id()将返回当前认证用户的标识符。

如果您需要的用户模型相反,你应该用户:

Auth::user() 

如果你不是喜欢不使用你可以得到用户与当前请求相关的Auth门面:

$request->user()