Qyerying一对多关系

Qyerying a one-to-many relationship

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

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

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

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

此函数设法为我获取给定用户的所有上传,但不是作者:

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

我在模型中的关系定义如下:

用户:

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

阿夫托:

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');
    }

任何人都可以帮我找出我做错了什么,因为我一个人做不到吗?

您可以使用具有嵌套关系点语法的 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();