Qyerying一对多的关系

时间:2017-12-12 17:34:02

标签: laravel laravel-5 eloquent laravel-5.4

所以我有表UploadsAvtors(作者)。我正在尝试编写一个查询,它将为我提供给定用户+作者的所有上传。

为实现这一点,我在控制器中有以下功能:

public function uploads()
        $uploads = Auth::user()->upload()->with('author')->paginate(10);

        return view('uploads')->with('uploads',$uploads);
    }

此功能设法为我提供给定用户的所有上传,但不是作者:

当我使用dd进行调试时,我得到了这个:

enter image description here

我在模型中的关系在以下方面有所不同:

用户:

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

Avtor:

class Avtor extends Model
{
    public function uploads(){
        return $this->hasMany('App\Upload');
    }
}

上载:

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

有人可以帮助我找出我在这里做错了什么因为我不能自己做吗?

1 个答案:

答案 0 :(得分:1)

您可以使用嵌套关系点语法的load()方法:

auht()->user()->load(['uploads', 'uploads.author'])->get();

在这种情况下,您不需要将任何数据传递给视图,只需执行此操作:

@foreach (auth()->user()->uploads as $upload)

或者您可以使用with()方法:

$uploads = Upload::with('author')->where('user_id', auth()->id())->get();