Yii2查询条件存在

d.r*_*aev 2 query-builder yii2

我有一棵简单的Personparent_id.

我不会构建一个(Yii2)查询来查找给定的所有Person,即其他人的项(也就是不离开).

输出SQL应如下所示:

select * from person t 
where exists (select 1 from person p2 where t.id = p2.parent_id);
Run Code Online (Sandbox Code Playgroud)

但是找不到使用查询构建器构建它的正确方法,有一个方法->exists(),但没有太多关于它的文档/示例.

小智 5

不确定我是否理解正确,但你看起来像这样吗?

$subQuery = (new \yii\db\Query)
                ->select([new \yii\db\Expression('1')])
                ->from('person p2')
                ->where('t.id = p2.parent_id');
$query = (new \yii\db\Query())
                ->select('*')
                ->from('person t')
                ->where(['exists', $subQuery]);
$command = $query->createCommand();
print_r ($command->sql);
Run Code Online (Sandbox Code Playgroud)

生成sql如:

SELECT * FROM `person` `t` WHERE EXISTS (SELECT 1 FROM `person` `p2` WHERE t.id = p2.parent_id)
Run Code Online (Sandbox Code Playgroud)