【问题标题】:Get user in Laravel 5.2 by username通过用户名在 Laravel 5.2 中获取用户
【发布时间】:2016-10-03 10:59:10
【问题描述】:

我正在尝试通过用户名获取用户并返回他的个人资料页面。

路由是这样定义的:

 Route::get('user/{slug}', 'UserController@getUserByName');

在我的UserController 中,我已经像这样定义了getUserByName

public function getUserByName($slug)
{
    $user_id = User::where('username', $slug)->first()->id;
    return view('users.user', compact('user_id'));
}

但是我收到一个错误No query results for model [App\User]

我已经尝试了this answer 中建议的几乎所有解决方案,但所有答案仍然出现相同的错误。

Users 表的架构定义如下:

Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('username');
        $table->string('email')->unique();
        $table->string('password', 60);
        $table->rememberToken();
        $table->timestamps();
});

定义查询的正确方法应该是什么?

我正在使用 phpMysql

编辑:

users.user刀片模板定义如下:

@extends('layouts.users')

@section('title'){{$user->username}} profile @stop

@section('container')
   @include('users._rightnav')
        <div class="alert alert-info text-center clearfix">
            User details
        </div>
        <ul class="list-group">
            Username:  {{$user->username}}
            Email:     {{$user->email}}
        </div>
@stop

【问题讨论】:

  • 你能告诉我们你的刀片视图代码吗?
  • 您确定您有该用户名的用户吗?转储 $slug 以查看它是否实际上已正确传递。
  • 你需要传递 $user 而不是 $user_id

标签: php laravel laravel-5.2


【解决方案1】:

修改后,

您应该编写如下代码。

在控制器中,

public function getUserByName($slug){      
    $user = User::where('username', $slug)->first();        
    return view('users.user', compact('user'));
}

在视图中(刀片文件),

@extends('layouts.users')

@section('title')

{{$user ? $user->username : 'No user found'}} profile 

@stop

@section('container')
   @include('users._rightnav')
        <div class="alert alert-info text-center clearfix">
            User details
        </div>
        <ul class="list-group">
            Username:  {{$user ? $user->username : 'No user found'}}
            Email:     {{$user ? $user->email : 'No user found'}}
        </div>
@stop

注意:-在访问它的属性之前总是先检查查询结果,以避免'试图获取非对象的属性'错误。

【讨论】:

  • 你错了,过目compactdocs
【解决方案2】:

您应该始终在访问其属性之前检查查询结果

public function getUserByName($slug)
{
    $user = User::where('username', $slug)->first();
    $user_id = $user ? $user->id : null;
    return view('users.user', compact('user_id'));
}

【讨论】:

  • 我仍然遇到同样的错误 No query results for model [App\User] 。我应该把函数放在哪里?在UserControllerUser 模型中?
  • 什么功能?我们可以看看你的users.user刀片模板吗?
  • 已编辑。查看上面的模板。挺好看的
  • 我在查询中犯了错误。现在解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 2018-02-21
  • 2019-08-22
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 2012-01-17
相关资源
最近更新 更多