Приносить данные модели пользователя в Laravel

По какому-то разуму, команда, которую я использую для того, чтобы он принес данные модели, не функционирует хорошо в этом случае. Он не показывает данных ни для чего, мне хотелось бы знать, есть ли способ приносить эти данные правильно

Данные, которых я пробую принести, - данные электронной почты и типа пользователя

Восток - моя модель. User.php

<?php

namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    const ADMIN_TYPE = 'admin';
    const DEFAULT_TYPE = 'cliente';

public function isAdmin(){        
    return $this->type === self::ADMIN_TYPE;    
}

    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [ //Determina los datos que se pueden meter
        'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [ //Esconde la clave
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

Это мой драйвер, в методе getProfile он, где у меня есть проблема. Он не приносит данные, которые должны быть у модели, которые находятся в базе данных

<?php
namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;
use App\Http\Requests;
use Auth;
use Redirect;

class UserController extends Controller
{
    public function getSignup(){
        return view('user.signup'); //Manda al usuario al signup
    }

    public function postSignup(Request $request){ //Crear el usuario
        $this->validate($request, [
            'email' => 'email|required|unique:users',
            'password' => 'required|min:4',
            'type' => User::DEFAULT_TYPE,
        ]); //Valida al usuario deacuerdo si es unico y su clave es mayor a 4

        $user=new User([
            'email' => $request->input('email'),
            'password' => bcrypt($request->input('password')),

        ]);

        $user->save(); //Salva al usuario
        Auth::login($user); //Arranca la sesion
        return redirect()->route('user.profile');
    }

    public function getSignin(){
        return view('user.signin');
    }

    public function postSignin(Request $request){ //Inicio de sesion
        $this->validate($request, [
            'email' => 'email|required',
            'password' => 'required|min:4'
        ]); //Valida los campos

        if(Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password'), 'type' => 'cliente'])){
          return redirect()->route('user.profile');
        } //Valida si el usuario es un cliente

        if(Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password'), 'type' => 'admin'])){
            return redirect()->route('admin.dashboard');
          } //Valida si el usuario es un admin

        return redirect()->back();
        }

    public function getProfile(){
        $users = DB::table('users')->where('id','=',$id)->get(); //Quiero agarrar la id del usuario actual, la cual esta definida arriba
        return view('user.profile', compact('users', $users));
    }

    public function getLogout(){
      Auth::logout();
      return redirect()->route('product.index');
    }
    }

Восток - мой view, не показывает данных, что я прошу у него, что принес драйвер UserController посредством метода, что эта достигает в getProfile, просто показывает данные в мишени

@extends('layouts.master')

@section('content')

<div class="row">

   <div class="col-md-4 col-md-offset-4">
   <h1>Perfil </h1>
   <h2>Email: {{ $users->email }}</h2>
   <h2>Tipo de usuario: {{ $users->type }}</h2>
   </div>
</div>
@endsection

Это маршрут, который он использует

Route::get('/profile', [
    'uses' => 'UserController@getProfile',
    'as' => 'user.profile' //Es el modulo de perfil, solo usuarios registrados lo pueden ver
]);

Edit: Мои маршруты в web.php ты завершаешь

<?php

   //Invoca al controlador ProductController para que muestre el index
    Route::get('/', [
        'uses' => 'ProductController@getIndex',
        'as' => 'product.index'
    ]);

    //Invoca al controlador ProductController para que meta cosas en el carrito
    Route::get('/shopping-cart/{id}', [
        'uses' => 'ProductController@getAddToCart',
        'as'=> 'product.addToCart',
        'middleware' => 'auth'
    ]);

    //Invoca al controlador ProductController para que meta cosas en el carrito
    Route::get('/shopping-cart/', [
        'uses' => 'ProductController@getCart',
        'as'=> 'product.shoppingCart',
        'middleware' => 'auth'
    ]);

    Route::get('/checkout', [
        'uses' => 'ProductController@getCheckout',
        'as'=> 'checkout',
        'middleware' => 'auth'
    ]);

    Route::post('/checkout', [
        'uses' => 'ProductController@postCheckout',
        'as'=> 'checkout',
        'middleware' => 'auth'
    ]);

     //Invoca al controlador de Usuarios y hace diversas funciones
     Route::group(['prefix' => 'user'], function() {

        Route::group(['middleware' => 'guest'], function() {
          Route::get('/signup', [
            'uses' => 'UserController@getSignup',
            'as' => 'user.signup'  //Es el modulo de registro, solo usuarios no registrados lo pueden usar
        ]);

        Route::post('/signup', [
            'uses' => 'UserController@postSignup', 
            'as' => 'user.signup' //Es el modulo de registro, cuando el usuario se registra, solo usuarios no registrados lo pueden usar
        ]);

        Route::get('/signin', [
            'uses' => 'UserController@getSignin',
            'as' => 'user.signin' //Es el modulo de inicio de sesion, solo usuarios no registrados lo pueden usar
        ]);

        Route::post('/signin', [
            'uses' => 'UserController@postSignin', 
            'as' => 'user.signin' //Es el modulo de inicio de sesion, cuando el usuario inicia sesion, solo usuarios no registrados lo pueden usar
        ]);
    });

    Route::group(['middleware' => 'auth'], function() {
        Route::get('/profile/{id}', [
            'uses' => 'UserController@getProfile',
            'as' => 'user.profile' //Es el modulo de perfil, solo usuarios registrados lo pueden ver
        ]);

        Route::get('/logout', [
            'uses' => 'UserController@getLogout',
            'as' => 'user.logout'  //Es el modulo de salir, solo usuarios registrados lo pueden usar
        ]);

    });
    });

    Route::get('/admin', 'AdminController@admin')    
        ->middleware('is_admin')    
        ->name('admin.dashboard');
1
задан 08.11.2019, 02:52
1 ответ

Мне кажется, что у тебя есть следующие ошибки:

  1. , Если твой маршрут /profile служит для того, чтобы получить профиль единственного пользователя, разграниченного Вашими id, тогда deberГ, - чтобы светить asГ-:

А именно мы происходим с ним как parГЎmetro необходимо так называемая переменная id, которая serГЎ dinГЎmica, когда берет стоимость numГ©rico использованный, чтобы выдавать в пользователя

CГіdigo

Route::get('/profile/{id}', [
    'uses' => 'UserController@getProfile',
    'as' => 'user.profile' //Es el modulo de perfil, solo usuarios registrados lo pueden ver
]);
  1. Секунда, в твоей консультации тебе надо показывать, что выражение mГ©todo getProfile() получило переменную $id asГ - podrГЎs использовать ее на уровне твоей консультации и выдавать из-за стоимости, что пользователь mnande vГ - в URI

CГіdigo:

public function getProfile($id){
    $users = User::whereId($id)->first(); 
    return view('user.profile', compact('users', $users));
}

Сейчас в твоем виде, чтобы повторять данные, deberГ-схвати делать этим

    {{ $users->columna1 }}
    {{ $users->columna2 }}

AdemГЎs этого:

  • Ввиду того, что у тебя есть модель User, был тем, который usГ©, чтобы составлять консультацию, не нужно query builder
  • Использовал whereId приводя в пример имя колонны, из-за которой ты хочешь выдать
  • Ввиду того, что ты только ищешь выдавать и получать инстанцию модели посредством Ваших id, тогда заменяет использование get() из-за mГ©todo first() в консультации

Ссылок

1
ответ дан 01.12.2019, 12:18
  • 1
    Хорошие. Сейчас у меня выходит ошибка " Missing required parameters for [Route: user.profile] [URI: user / profile / {пойдите} " – Shredder 08.11.2019, 02:38
  • 2
    Я поместил все мои полные маршруты, чтобы видеть, помогает ли он этому – Shredder 08.11.2019, 02:52
  • 3
    Я это сделал и он дал мне ошибку " Property [электронная почта] does not exist on this collection instance" – Shredder 08.11.2019, 03:08
  • 4
    Ему удайтесь решить. Оказывается, что оставалось менять меню для того, чтобы он говорил href =" { { route (' user.profile' auth ()-> user ()-> пойдите) } } " – Shredder 08.11.2019, 03:41
  • 5
    Что хорошо @Shredder вкус помогать тебе, и что ты найдешь недостающее – Aprendiz 08.11.2019, 03:42