通过Laravel关系访问数据

时间:2018-05-21 16:03:16

标签: laravel relational-database

我有两个表/型号。用户和广告。

当用户发布广告时,其用户标识是数据库行中的列。我想使用id来获取用户详细信息并将其显示在刀片​​模板中。

这些是模型

广告属于用户。

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

用户有很多广告。

class User extends Authenticatable
{
    public function advert(){
      return $this->hasMany('App\Advert);
    }
}

在广告显示页面上,我希望在其旁边打印出用户名和详细信息。目前,我只能访问在DB中的广告列中存储为attirbute的ID。如何使用此关联来访问用户数据。

这是节目控制器

public function show($id){
      //Shows add user clicked on based on id
      $user = User::where('id', $id)->first();
      $Advert = Advert::where('id', $id)->first();
      return view('pages/advert/show', compact('Advert', 'user'));

    }

在展示页面视图中,我可以访问用户ID,如{{$user->id}}

1 个答案:

答案 0 :(得分:1)

您正在使用传递到$id功能的show来检索用户和广告。

public function show($id){
    // Get the avert with the passed in id
    $advert = Advert::find($id);
    // From the advert get the user related to it.
    $user = $advert->user;
    return view('pages/advert/show', compact('advert', 'user'));
}

看看https://laravel.com/docs/5.6/eloquent-relationships#querying-relations,以便更好地了解雄辩如何与人际关系一起工作。