数据未在Laravel中获取当前用户

时间:2018-10-30 18:42:52

标签: php mysql laravel

我正在尝试获取当前登录用户的数据,但正在获取数据库中所有用户的结果。尽管在所有人看来相同的问题都是正确的,但请帮忙。 我的代码给出了 我的观点是personal.blade.php

@extends('layouts.app')
@section('content')
<div class="container"><br>
    <h1 class="text-success text-center">Profile</h1><br>
    <table class="table table-bordered">
        @foreach($data as $value)
    <tr>
        <th>Name</th>
        <td>{{ $value ->tname}}</td>
        </tr>
        <tr>
            <td>Father Name</td>
            <td>{{ $value ->fname}}</td>
        </tr>
        <tr>
            <td>Email</td>
            <td>{{ $value ->email}}</td>
        </tr>
        <tr>
            <td>Official Email</td>
            <td>{{ $value ->off_email}}</td>
        </tr>
        @endforeach
    </table>
 <div class="form-group">
        <label>Generate Report</label>
        <div class="radio form-control">
            <label class="col-md-4"><input type="radio" name="status" value="conf" >Personal</label>

            <label class="col-md-4"><input type="radio" name="status"  value="general">Publications</label>
        </div>
    </div>
    <button class="btn btn-info" data-toggle="collapse" data-target="#demo"> Generate PDF</button>
    <button class="btn btn-info" data-toggle="collapse" data-target="#demo"> Generate CSV</button>
    <button class="btn btn primary"><a href="home">Go to Home</a></button><br>
    <div id="demo" class="collapse">
        <h3 class="text-success text-center">Complete your publication's detail</h3><br>
        <div class="col-md-offset-3 col-md-6 m-auto d-block">
            <form action="pub" method="post">

                <input type="hidden" name="_token" value="{{csrf_token()}}">

                <div>
 @endsection

我的控制器是EducationController.php,并且给出了代码。

<?php

namespace App\Http\Controllers;
use Auth;
use Illuminate\Http\Request;
use App\education;
use DB;
class EducationController extends Controller
{
    public function show()
    {
        //
        $data['data'] = DB::table('users')->get();
        if(count ($data)>0){
            return view('personal',$data);
        }
        else
        {
            return view('personal');
        }
    }


}

我的路线代码在这里给出。

Route::get('/home', 'HomeController@index')->name('home');
Route::get('/personal','EducationController@personal');

请帮助我。我不知道如何在所有视图中使用当前用户。我登录时得到的结果是所有存储在数据库中的用户的结果。预先感谢。

2 个答案:

答案 0 :(得分:0)

您使用@foreach表示您希望视图中有多个用户。

如果只想显示已登录用户的详细信息,则应该执行以下操作:

<?php

class EducationController extends Controller
{
    public function show()
    {

        if(\Auth::check()){
            $user = \Auth::user();
            return view('personal',compact('user'));
        }
        else
        {
            return view('personal');
        }
    }
}

在您看来:

@extends('layouts.app')
@section('content')
<div class="container"><br>
    <h1 class="text-success text-center">Profile</h1><br>
    <table class="table table-bordered">
    @if (isset($user))
    <tr>
        <th>Name</th>
        <td>{{ $user->tname}}</td>
        </tr>
        <tr>
            <td>Father Name</td>
            <td>{{ $user->fname}}</td>
        </tr>
        <tr>
            <td>Email</td>
            <td>{{ $user->email}}</td>
        </tr>
        <tr>
            <td>Official Email</td>
            <td>{{ $user->off_email}}</td>
        </tr>
     @endif
    </table>
    // Rest of view

答案 1 :(得分:0)

这是因为您的代码实际上是用于吸引所有用户的。您应该这样:

<?php

namespace App\Http\Controllers;
use Auth;
use Illuminate\Http\Request;
use App\education;
use DB;
class EducationController extends Controller
{
    public function show()
    {
        $user = Auth::user();
        return view('personal',compact('user'));
        }
    }


}

然后在您看来:

  <tr>
        <th>Name</th>
        <td>{{ $user->tname}}</td>
        </tr>
        <tr>
            <td>Father Name</td>
            <td>{{ $user->fname}}</td>
        </tr>
        <tr>
            <td>Email</td>
            <td>{{ $user->email}}</td>
        </tr>
        <tr>
            <td>Official Email</td>
            <td>{{ $user->off_email}}</td>
        </tr>

请注意,如果您具有多个身份验证,则必须指定警卫:

Auth::guard('yourguard')->user();

否则,您的用户将返回null。