我有两个相关的表,posts
和hidden_posts
,其中posts
。id
对应于hidden_posts
。post_id
。
在我的posts
模型中,如果帖子应该被隐藏,我具有此关系以返回记录:
public function getHiddenPosts()
{
return $this->hasOne(HiddenPost::className(), ['post_id' => 'id']);
}
现在,我需要返回所有未隐藏的帖子。所以我正在寻找这个伪代码的等效物:
return $this->hasNone(HiddenPost::className(), ['post_id' => 'id'])->all();
这是在说,“告诉我所有不在hidden_posts表中的帖子”。
那么这是使用外部联接查询还是有一条语句找不到我在一行中执行此操作?
您可以使用内部联接检索过帐项目
$posts = Post::find()
->select('post.*')
->innerJoin('hidden_post', '`post`.`id` = `hidden_post`.`post_id`')
->all();
可以使用内部联接检索帖子项目
$res = Post::find()
->select('post.*')
->innerJoin('hdn_post', '`post`.`id` = `hdn_post`.`post_id`')
->all();