首页 > 解决方案 > Laravel whereDoesntHave union whereHas

问题描述

我正在尝试查询没有关系的模型并将其与有关系的模型联合,但出现内存耗尽的错误。

Post::whereDoesntHave('comments')
    ->union(Post::newQuery()->whereHas('comments')->getQuery())
    ->paginate();`

有人知道使用工会的更好方法吗?

标签: phpmysqlsqllaravel

解决方案


使用以下代码更新您的帖子模型。

class Post extends Model
{
    public function comments()
    {
        return $this->hasMany(Comment::class); //Pass Foreign Key if other than id
    }
}

使用此代码更新您的评论模型。

class Comment extends Model
{
    public function post()
    {
        return $this->belongsTo(Post::class);//Pass Foreign Key if other than id
    }

    public function user()
    {
        return $this->belongsTo(User::class);//Pass Foreign Key if other than id
    }
    public function scopeNoComment($query)
    {
        return $query->count() == 0;
    }

}
$comments = $post->NoComment()->with('user')->paginate(10);

建立关系将很容易访问数据。


推荐阅读