Eloquent 多对多中的 has()
Eloquent has() in Many-To-Many
我有一个简单的博客系统,有 posts
、tags
和 posts_tags
table。 posts
和 tags
table 都有一个 id
和一个 content
字段,而 posts_tags
table 有字段 post_id
和 tag_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
列不可为空。
我有一个简单的博客系统,有 posts
、tags
和 posts_tags
table。 posts
和 tags
table 都有一个 id
和一个 content
字段,而 posts_tags
table 有字段 post_id
和 tag_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
列不可为空。