Eloquent 多对多中的 has()

Eloquent has() in Many-To-Many

我有一个简单的博客系统,有 poststagsposts_tags table。 poststags table 都有一个 id 和一个 content 字段,而 posts_tags table 有字段 post_idtag_id。我的 eloquent 型号是:

class Post extends \Illuminate\Database\Eloquent\Model
{
    public function tags()
    {
        return $this->belongsToMany('Tag', 'posts_tags', 'post_id', 'tag_id');
    }
}

class Tag extends \Illuminate\Database\Eloquent\Model
{
    public function posts()
    {
        return $this->belongsToMany('Post', 'posts_tags', 'tag_id', 'post_id');
    }
}

现在,据我所知,如果我调用 Post::has('tags')->get(),我应该得到至少有一个标签的帖子(所有标签都有)。但我得到的只是一个空数组(我在调用 Tag::has('posts')->get() 时也得到了)。我做错了什么?

好的,在这个问题中找到了问题:Laravel Eloquent::Find() returning NULL with an existing ID

问题是,我使用的是软删除

class Post extends \Illuminate\Database\Eloquent\Model
{
    use SoftDeletingTrait;

    protected $dates = ['deleted_at'];

    public function tags()
    {
        return $this->belongsToMany('Tag', 'posts_tags', 'post_id', 'tag_id');
    }
}

但我的 deleted_at 列不可为空。