ユーザーを追加するフォームを送信すると、「非オブジェクトのプロパティを取得しようとしている」というエラーが表示されます。エラーは最初の行にあるようです:Auth :: user()-> id of the :
$id = Auth::user()->id;
$currentuser = User::find($id);
$usergroup = $currentuser->user_group;
$group = Sentry::getGroupProvider()->findById($usergroup);
$generatedPassword = $this->_generatePassword(8,8);
$user = Sentry::register(array('email' => $input['email'], 'password' => $generatedPassword, 'user_group' => $usergroup));
$user->addGroup($group);
何か案は?私はしばらくの間検索しましたが、表示されるすべてのものはこれでうまくいくはずです。ユーザーがSentry 2認証バンドルを使用してログインしています。
Sentry
を使用している場合は、Sentry::getUser()->id
でログインしているユーザーを確認してください。取得するエラーは、Auth::user()
がNULLを返し、NULLからidを取得しようとするため、エラーtrying to get a property from a non-object
が発生することです。
Laravel 4.2では、ユーザーIDを簡単に取得できます。
$userId = Auth::id();
それがすべてです。
ただし、id以外のユーザーのデータを取得するには、次を使用します。
$email = Auth::user()->email;
詳細については、 ドキュメントのセキュリティ部分 を確認してください
ログインする前にAuth :: check()を実行してください:
if (Auth::check())
{
// The user is logged in...
}
idはprotected
です。パブリックメソッドを/models/User.php
に追加するだけです
public function getId()
{
return $this->id;
}
だからあなたはそれを呼び出すことができます
$id = Auth::user()->getId();
ユーザーがログインしているかどうかを常にテストしてください...
if (Auth::check())
{
$id = Auth::user()->getId();
}
Laravel 5.6で使用します
use Auth;
$user_id = Auth::user()->id;
他の提案として
Auth::id()
Laravel 5.xの古いバージョンに適用されるようで、私にとってはうまくいきませんでした。
Auth::user()
を使用している関数のroute
を確認します。Auth:: user()データを取得するには、関数はweb
ミドルウェアRoute::group(['middleware' => 'web'], function () {});
内にある必要があります。
含めることを忘れないでください:
use Illuminate\Http\Request;
次に、requestメソッドを使用してIDを見つけます。
$id= $request->user()->id;
illuminate\Support\Facades\Authを使用します。
クラスで:
protected $user;
このコードは私にとってはうまくいきます
構成内:
$this->user = User::find(Auth::user()->id);
In function:
$this->user->id;
$this->user->email;
等..
あなたの質問とコードサンプルは少しあいまいで、他の開発者は間違ったことに集中していると思います。私はLaravelでアプリケーションを作成していますが、オンラインチュートリアルを使用して新しいユーザーと認証を作成しましたが、Laravelで新しいユーザーを作成するとAuthオブジェクトが作成されないことに気づいたようです-(新しい)アプリケーションの残りの部分でログインしているユーザーのID。これは問題であり、あなたが尋ねているかもしれないことを信じています。私はuserController :: storeでこの種のずさんなハックをしました:
$user->save();
Session::flash('message','Successfully created user!');
//KLUDGE!! rest of site depends on user id in auth object - need to force/create it here
Auth::attempt(array('email' => Input::get('email'), 'password' => Input::get('password')), true);
Redirect::to('users/' . Auth::user()->id);
作成して認証する必要はありませんが、他に何をすべきかわかりませんでした。
最初にチェックしたユーザーがログインしてから
if (Auth::check()){
//get id of logged in user
{{ Auth::getUser()->id}}
//get the name of logged in user
{{ Auth::getUser()->name }}
}
誰かがlaravel 5を探しているなら>
Auth::id()
許可されたユーザーのIDを与える
ユーザーがログインしていることを確認する必要がありますか?
Auth::check() ? Auth::user()->id : null