我们的应用程序有3个模型"通知"," Postlike"和"发布"
在通知模型中:
public function postlike()
{
return $this->belongsTo('App\Models\PostLikes', 'postlist');
}
public function post()
{
return $this->hasMany('App\Models\PostLikes', '_id', 'c_post_id');
}
在Postlike Model中:
public function postlist()
{
return $this->hasMany('App\Models\Post', '_id', 'c_post_id');
}
在通知存储库中:(查询)
public function getnotification($userId)
{
$notification = $this->makeModel()
->with('post')
->with('postlike')
->with('notification')
->orderBy('created_at' , 'desc')
->where('replied_id', $userId)
->get();
return $notification;
}
有关更多信息,我们附上了以下图片 enter image description here
答案 0 :(得分:1)
当我看到你的帖子时,我认为你的问题可以通过Laravel的内置eager loading
解决,所以它可以让你做这样的事情:
$notification = $this->makeModel()
->with('post', 'postlike', 'postlike.postlist')
//...
->get();
如果是你的情况,那么这些链接就可以解决问题:
https://laracasts.com/discuss/channels/eloquent/eager-load-multiple-nested-relationships
laravel eloquent eager load multiple nested relationships
我不确定,但对我来说似乎有点奇怪,'通知'模型与'Postlike'模型有两个关系。也许你应该考虑使用一些数据透视表。
希望它有所帮助,
答案 1 :(得分:0)
通知模型:
public function postlike()
{
return $this->belongsTo('App\Models\PostLikes', 'c_post_id');
}
Query:
$notification = $this->makeModel()
{
->with('post', 'postlike', 'postlike.postlist')->get()
}