gpt4 book ai didi

php - 如何将自定义查询转换为 CDbCriteria

转载 作者:行者123 更新时间:2023-11-29 05:31:07 24 4
gpt4 key购买 nike

我有以下查询:

select 
`t`.`id` AS `id`,
`rm`.`role_id` AS `role_id`,
`t`.`id` AS `sequence`,
`t`.`parent_id` AS `parent_id`,
`t`.`label` AS `label`,
`t`.`order` AS `order`,
(case
when isnull(`rm`.`id`) then 0
else 1
end) AS `description`,
`tb`.`label` AS `parent_label`
from
((`tbl_menu` `t`
left join `tbl_menu` `tb` ON ((`t`.`parent_id` = `tb`.`id`)))
left join `tbl_role_menu` `rm` ON ((`rm`.`menu_id` = `t`.`id`))) and rm.role_id = $role_id
where
isnull(`tb`.`label`)
union select
`t`.`id` AS `id`,
`rm`.`role_id` AS `role_id`,
`t`.`parent_id` AS `parent_id`,
`t`.`parent_id` AS `sequence`,
`t`.`label` AS `label`,
`t`.`order` AS `order`,
(case
when isnull(`rm`.`id`) then 0
else 1
end) AS `description`,
`tb`.`label` AS `parent_label`
from
((`tbl_menu` `t`
left join `tbl_menu` `tb` ON ((`t`.`parent_id` = `tb`.`id`)))
left join `tbl_role_menu` `rm` ON ((`rm`.`menu_id` = `t`.`id`))) and rm.role_id = $role_id
where
(`tb`.`label` is not null)
order by `sequence` , `parent_id` , `label`

在这两个查询中,在第二个左连接中,我必须传递一个变量 $role_id。目前,我在一个 View 上有这个查询,但是如果尝试传递一个标准条件,结果查询是

select * form menu_links where role_id = $role_id

作为 menu_links View 的名称。这没有给我想要的结果。我需要一种方法来将此参数添加到此查询并将其转换为 CDbCriteria,以便将其传递给 CGridView。有帮助吗?

谢谢。

最佳答案

考虑使用 CArrayDataProvider .

CArrayDataProvider 充当简单关联数组的包装器,CGridView 不知道其中的区别。您甚至可以应用分页、排序等。可以在文档中找到展示这些功能的示例:

$rawData=Yii::app()->db->createCommand('SELECT * FROM tbl_user')->queryAll();

$dataProvider=new CArrayDataProvider($rawData, array(
'id'=>'user',
'sort'=>array(
'attributes'=>array(
'id', 'username', 'email',
),
),
'pagination'=>array(
'pageSize'=>10,
),
));

关于php - 如何将自定义查询转换为 CDbCriteria,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com