仅查找YIi2中相关表中包含数据的行

仅查找YIi2中相关表中包含数据的行,yii2,Yii2,我有两个表:“用户”包含用户数据,“帖子”包含用户帖子。每个用户可以有许多帖子 使用者 身份证 全名 职位 邮政编码 发布内容 id\u用户 我想做的是隐藏没有帖子的用户,所以我尝试在我的搜索模型中加入表: public function search($params) { $query = Users::find->joinWith(['posts']); } 但不幸的是,没有post的用户仍然显示。使用mysqlWHERE NOT NULL语法 $query = Us

我有两个表:“用户”包含用户数据,“帖子”包含用户帖子。每个用户可以有许多帖子

使用者

  • 身份证
  • 全名
职位

  • 邮政编码
  • 发布内容
  • id\u用户
我想做的是隐藏没有帖子的用户,所以我尝试在我的搜索模型中加入表:

public function search($params) {
    $query = Users::find->joinWith(['posts']);
}

但不幸的是,没有post的用户仍然显示。

使用mysql
WHERE NOT NULL
语法

$query = Users::find->joinWith(['posts'])->where(['not', ['posts.post_no' => null]]);
其中,Yii2的非空替代语法:

->where(['IS NOT', 'posts.post_no', null]);

->where(['<>', 'posts.post_no', null]);

->having(['posts.post_no' => 'NOT NULL']);
->其中(['IS NOT','posts.post_no',null]);
->其中(['',posts.post_no',null]);
->有(['posts.post_no'=>'notnull']);
请在此处查看官方文件:

使用
innerJoinWith()
@疯狂骷髅我尝试了你的建议,并将其更改为:$query=Users::find->innerJoinWith(['posts]);但仍然不起作用:(很乐意帮忙:-)