gpt4 book ai didi

php - Yii-CGridView

转载 作者:可可西里 更新时间:2023-11-01 01:04:58 28 4
gpt4 key购买 nike

我正在用 Yii (v1.1.12) 编写我的第一个应用程序,学习曲线对我来说有点陡峭,所以我需要一些帮助。

设想以下表格(及其关系):

  • 详细 (n:1) 文档
  • 文档 (n:1) 用户
  • 用户(n:1)部门
  • 文档 (n:1) 类别

user 是包含可以登录和使用应用程序的用户信息的表。

我已经设法(使用 Gii 和 hacking about)一个列出所有文档的 View ,并且还设法在网格中显示类别名称而不是类别 ID。

我想要实现的功能之一是允许用户切换 View ,以便 (a) 仅列出与登录用户相关的文档,或 (b) 仅列出与其部门相关的文档。

我环顾四周,但运气不佳。谁能帮忙?

干杯,乔治

更新:目前我使用 zii.widgets.grid.CGridView 显示文档列表。

更新 2: 根据 Omar 对 CDbCriteria 的引用,我找到了 this包含有关该主题的更多详细信息的 URL。

我想出了以下模型代码,效果很好:

public function searchByUser($user_id)
{
$criteria=new CDbCriteria;
$criteria->condition = " user_id = ".$user_id;
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
public function searchByDepartment($user_id)
{
$criteria=new CDbCriteria;
$criteria->alias="p";
$criteria->join = "JOIN (SELECT u.id
FROM user u
INNER JOIN user uu
ON u.department_id = uu.department_id
WHERE uu.id = ".$user_id.") uu
ON p.user_id = uu.id";
return new CActiveDataProvider($this, array('criteria'=>$criteria,));
}

虽然上面的工作按预期进行,但我希望有一个完全不需要我编写精简 SQL 代码的解决方案。不是因为懒惰,而是为了利用框架的更多功能。

我只是觉得这种方法没有遵循最佳实践(?)。

最佳答案

尝试创建您自己的 CDBCriteria 并在其中定义任何条件,并将其作为数据提供者传递给您的 GridView 。

如果您允许在 GridView 中进行搜索,请将条件传递给搜索函数,然后在其中将传递的条件与搜索中的条件合并。

关于php - Yii-CGridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13345949/

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