Выборка данных текущего логина пользователя в laravel - PullRequest
0 голосов
/ 01 ноября 2018

Здравствуйте, друзья! Я пытаюсь получить данные текущего пользователя для входа в laravel, но я получаю данные всех пользователей, я имею в виду, что у меня есть две таблицы. Одна из них - это таблицы пользователей, в которых хранятся данные пользователей и других пользователей. это таблицы публикаций, в которых хранятся результаты публикаций зарегистрированных пользователей. Как я могу получить данные о публикациях текущего пользователя входа в систему, в то время как публикации и пользователи соединяются через ключ пользователя user_id. Мой код указан здесь.

Publication.blade.php

@extends('layouts.app')
@section('content')


<div class="container"><br>
    <h1 class="text-success text-center">Your Publications</h1><br>
    <table  class="table table-bordered">
        <tr class="">
            <th>Publication Title</th>
            <th>Publication Status</th>
            <th>Year</th>
            <th>More Actions</th>
        </tr>
        @foreach($data as $value)
        <tr>
            <td> {{ $value ->title}}</td>
            <td>{{ $value ->status}}</td>
            <td>{{ $value ->year}}</td>
            <td><a href=""><button>Edit</button></a>&nbsp;<a href=""><button>Delete</button></a></td>
        </tr>
        @endforeach

    </table>
    <button class="btn btn-info" data-toggle="collapse" data-target="#demo">Add more publications here</button> <button class="btn btn primary"><a href="home">Go Back to Dashboard</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>
                <div class="form-group">
                    <label>Title </label>
                    <input type="text" name="title" id="" class="form-control">

                </div>

                <div class="form-group">
                    <label>Conference / General </label>
                    <div class="radio form-control">
                        <label class="col-md-4"><input type="radio" name="status" value="conf" >Conference</label>

                        <label class="col-md-4"><input type="radio" name="status"  value="general">General</label>
                        <label><input type="radio" name="status" value="other" >Other</label>
                        </div>
                </div>

                <div class="form-group">
                    <label>Year: </label>
                    <input type="number" name="year" id="" class="form-control">
                </div>
            </div>

            <div>
                <input type="submit" name="submit" value="ADD!" class="btn btn-lg col-md-offset-3 col-md-6 m-auto d-block">
            </div>
            <input type="hidden" name="_token" value="{{csrf_token()}}">
            </div>

    </div>
    </div><!--end demo-->


    @endsection

Код моей модели находится здесь публикация. Php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class publication extends Model
{
    //
    protected $fillable = ['user_id','title','status','year'];
}

Код PublicationController.php приведен здесь. Пожалуйста, помогите мне, где проблема.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\publication;
use Auth;
use DB;

class PublicationController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        return view('publications');
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
        publication::create([
            'user_id' => Auth::user()->id,
            'title' => request('title'),
            'status' => request('status'),
            'year' => request('year')
        ]);

        return 'inserted';
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show()
    {
        //
        $data['data'] = DB::table('publications')->get();
        if(count ($data)>0){
        return view('publications',$data);
        }
        else
        {
            return view('publications');
        }
    }


    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

Код web.php Я имею в виду корни здесь.

//for publications
Route::get('publications','PublicationController@index');
Route::post('pub','PublicationController@store');
Route::get('publications','PublicationController@show');

И таблица пользователей таблиц, и таблица публикаций связаны через ключ foregion user_id, но я не могу получить данные текущих данных пользователя для входа. Это дает мне все данные, хранящиеся в публикациях Tabel.

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

Вам нужно изменить свой запрос следующим образом, чтобы добавить фильтр по пользователю:

$userId = Auth::user()->id;
$data['data'] = DB::table('publications')->where('user_id', $userId)->get();

И вы используете два похожих маршрута, просто удалите тот, который отправляет в метод индекса.

0 голосов
/ 01 ноября 2018

это может вам помочь, его работа

   public function show()
     {
    $id = Auth::user()->id;
    //
    $data['data'] = DB::table('publications')->where('user_id','=', $id)->first();
    if(count ($data)>0){
    return view('publications',compact('data'))
    }
    else
    {
        return view('publications');
    }
}
0 голосов
/ 01 ноября 2018

Вы можете получить данные для входа в систему.

Сначала включите это в ваш контроллер выше объявления класса

use Auth;

А затем измените свою функцию show, как показано ниже

public function show()
{
    //
    $user_id = Auth::user()->id;
    $data['data'] = DB::table('publications')->where('user_id' ,'=', $user_id)->get();
    if(count ($data)>0){
    return view('publications',compact('data'));
    }
    else
    {
        return view('publications');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...