【问题标题】:How to retrieve user name from user table by using data (user_id) from another table having relationship如何使用另一个有关系的表中的数据(user_id)从用户表中检索用户名
【发布时间】:2018-07-09 01:41:56
【问题描述】:

我有两个模型

User.php

public function opportunities()
{
    return $this->hasMany('App\Opportunity');
}

Opportunity.php

public function user()
{
    return $this->belongsTo('App\User');
}    

我在机会表中有user_id 列,并在每次用户发布记录时插入用户 ID(来自使用 Auth 的用户表)。

现在我需要一个视图来返回“这个帖子是这个用户发布的”

首先我通过

找到帖子ID
$posts =  Opportunity::find($id);
$posted_by = User::find($posts->user_id);
return view('opportunity.detail')->with('post', $posts, 'posted_by', $posted_by);

我已将用户名呈现为{{$posted_by->name}}

但是我在视图文件$posted_by 中有未定义的常量,而$post 很好。我是否以正确的方式做这件事?我将两个数组变量传递给帖子,但它不起作用。任何帮助将不胜感激。

【问题讨论】:

    标签: laravel model eloquent laravel-blade


    【解决方案1】:

    您的控制器可能如下所示:

    return view('opportunity.detail', [
        'post' => Opportunity::find($id);
    ]);
    

    在视图中显示用户名:

    Post {{ $post->title }} posted by {{ $post->user->name }}
    

    https://laravel.com/docs/5.5/eloquent-relationships#relationship-methods-vs-dynamic-properties

    如果出于某种原因您想使用->with(),请执行以下操作:

    ->with(['post' => $posts, 'posted_by' => $posted_by]);
    

    或者:

    ->with('post', $posts)->with('posted_by', $posted_by); 
    

    【讨论】:

    • 感谢您的回答,但机会模式没有名称字段。机会模型只有一个 user_id 列来存储用户的 id。但是应该根据 user_id 从 User.php 模型中检索用户名 .... 我所做的是首先找到 post id。记录包含 user_id。我的控制器:$posts = Opportunity::find($id); $posted_by = User::where('name')->find($posts->user_id);返回视图('opportunity.detail')->with('post', $posts, 'posted_by', $posted_by);反正我会试试的
    • @ParajuliSunil 试试代码。此外,单击链接了解关系和动态属性。
    • 感谢@Alexy Mezenin,它工作得很好!!!。我不知道这很简单。我开始使用 laravel 已经一个星期了,所以我对关系不太了解。再次感谢,我想我也会阅读您提到的链接以建立审查系统。
    【解决方案2】:

    你可以放这个

    public function getUserName() {
     return User::where('id', $this->user_id)->first()->name;
    }
    

    在您的 Opportunity.php 模型中并在您的视图中调用它

    @foreach ($posts as $post)
      {{ $post->getUserName() }}
    @endforeach
    

    【讨论】:

    • 这不是如何使用关系,请参阅其他答案。您可以在 getUserName() 方法中返回 $this->user->name
    猜你喜欢
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2017-09-06
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    相关资源
    最近更新 更多