提问者:小点点

Laravel 5.2雄辩的ORM hasMany通过


在我的laravel 5.2 web应用程序中,我有以下三个表-

使用者

id
username

简介

id
user_id

profile_images

id
profile_id

概述我的场景-用户可以有一个配置文件(一对一),一个配置文件可以有多个配置文件图像(一对多)。具有相关关系函数的这些表的模型如下-

使用者php

public function profile_images(){
    $this->hasManyThrough('App\ProfileImage', 'App\Profile');
}
public function profile(){
    return $this->hasOne('App\Profile');
}

Profile.php

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

档案图像。php

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

我的问题是,当我在用户模型上调用profile_images()时,我只获取用户数据,并且只返回profile和profile_图像的列名。即使我有一个配置文件(具有与测试用例匹配的用户id)和两个具有匹配配置文件id的配置文件图像,也不会返回任何属性/数据。

你能帮忙吗?我假设这是我的hasManyOut用法的问题。

谢谢


共1个答案

匿名用户

不需要。您的hasManyThrough关系很好,但是当您调用profile\u images方法时,它会返回QueryBuilder实例。要获取相关模型的集合,请使用get方法

$images = $user->profile_images()->get();

或者用拉威尔的“魔法”

$images = $user->profile_images;