当您知道id时,Laravel会从其他表中获取数据

时间:2016-06-19 19:28:44

标签: php mysql laravel

我有一张桌子"评论"使用名为" from_user"的列。所以基本上是放置评论的用户。在此列中,用户的id存储在users表中。是否可以在我的视图中找到用户名?

这就是现在的样子:

 @foreach($authUser->reviews as $review)
   <p>{{ $review->body }} - {{$review->from_user }}</p>
 @endforeach

因此,此代码现在显然显示了用户的ID。

这是我的用户表的样子:

  

ID | NAME | USERNAME | ...

这是我的评论表的样子:

  

ID | from_user | on_user |体

所以我的评论表中的from_user等于我的用户表的ID

所以我的问题是我可以在我的视图中访问我的foreach循环中的用户名吗?

我对laraval相当新,所以感谢任何帮助!

非常感谢提前

编辑:用户模型

class User extends Model implements AuthenticatableContract,
                                    AuthorizableContract,
                                    CanResetPasswordContract
{
    use Authenticatable, Authorizable, CanResetPassword, Messagable;

    protected $table = 'users';

    protected $fillable = ['name', 'email', 'password', 'firstname', 'lastname', 'straat', 'postcode', 'plaats', 'provincie', 'role', 'specialisatie'];

    protected $hidden = ['password', 'remember_token'];

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

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

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

EDIT2我的评论模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Review extends Model
{
    protected $guarded = [];

    protected $table = 'reviews';

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

1 个答案:

答案 0 :(得分:1)

<强>更新

review model中,您需要告诉关系使用哪个外键。默认情况下,它会添加relationName_id

  

Eloquent通过检查确定默认外键名称   关系方法的名称和后缀方法名称   _ID。但是,如果Phone模型上的外键不是user_id,则可以将自定义键名作为第二个参数传递给belongsTo   方法。 #Source

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Review extends Model
{
    protected $guarded = [];

    protected $table = 'reviews';

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

在你看来

@foreach($authUser->reviews as $review)
   <p>{{ $review->body }} - {{ $review->user->name }}</p>
 @endforeach