Yii2 修改 Model search() 中的 find() 方法

2024-06-19

我试图修改模型搜索中的 find() 方法,但它抛出错误“必须设置数据提供程序属性”。

这是我的搜索模型:

public function search($params)
{

    $userID = Yii::$app->user->identity->id;

    $groups = GroupAccess::find()
    ->where(['user_id' => $userID, 'item_name' => 'group_creator'])
        ->asArray()
        ->all();
        foreach ($groups as $group) {
            $accessGroups[] = $group['group_id'];
        }

    $query = Group::find($accessGroups);

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

    $this->load($params);

    if (!$this->validate()) {
        // uncomment the following line if you do not want to any records when validation fails
        // $query->where('0=1');
        return $dataProvider;
    }

    $query->andFilterWhere([
        'id' => $this->id,
        'status_id' => $this->status_id,
        //'created_user_id' => $this->created_user_id,
        'created_date' => $this->created_date,
        'profile_updated_user_id' => $this->profile_updated_user_id,
        'profile_updated_date' => $this->profile_updated_date,
        'last_accessed_user_id' => $this->last_accessed_user_id,
        'last_accessed_date' => $this->last_accessed_date,
    ]);

    $query->andFilterWhere(['like', 'name', $this->name])
        ->andFilterWhere(['like', 'description', $this->description]);

    return $dataProvider;
}

这是我的控制器操作:

$searchModel = new GroupSearch();
    $dataProvider =    $searchModel->search(Yii::$app->request->queryParams);

if (Yii::$app->request->isPjax) {
        return $this->renderAjax('groups', [
        'searchModel' => $searchModel,
        'dataProviderMine' => $dataProvider,
    ]);
    } else {
        return $this->render('groups', [
        'searchModel' => $searchModel,
        'dataProviderMine' => $dataProvider,
    ]);
    }

}

优化查询非常重要,因为用户应该能够看到其他组。

如何正确修改 find() 方法?

Thanks.


我在这里看到两个错误:

  1. 您的查找方法

    
    $query = Group::find($accessGroups)  

    不起作用 - 只需将其替换为

    
    $query = Group::find()->where(['id' => $accessGroups]);  
  2. 我猜想“必须设置数据提供程序属性”错误是由您的视图代码引起的。例如。如果您使用 GridView,则应该设置其“dataProvider”小部件选项:

    
    GridView::widget([
        'dataProvider' => $dataProviderMine,
        'searchModel' => $searchModel,
        'columns' => [
            'id', 'status_id', 'created_date' // your view columns here
        ]
    ])  
  3. 还可以考虑在搜索方法中使用子查询:

    
    $idAccessQuery = GroupAccess::find()
        ->where(['user_id' => $userID, 'item_name' => 'group_creator'])
        ->select('group_id');
    $query = Group::find()->where([
        'id' => $idAccessQuery
    ]);  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yii2 修改 Model search() 中的 find() 方法 的相关文章

  • ActiveRecord:向包含的 ON 子句添加条件

    我有一个模型报价和另一个历史报价 一个报价有很多历史报价 现在 我想立即加载一组报价的某一天的历史报价 如果存在 为此 我认为我需要将这一天传递给 ON 子句 而不是 WHERE 子句 以便我获得所有报价 即使在给定日期没有历史报价时也是如
  • 我可以在元标记中使用 HTML 字符实体吗?

    我有一个有两种语言的网站 英语和中文 在使用 UTF 8 字符集的英文主页中 我有 例如 这出现在搜索结果中 我想将其更改为 在哪里 20013 25991 是 中文 的 ISO 实体 搜索结果中会显示为 中文 吗 我无法将 中文 直接粘贴
  • Laravel 搜索关系

    我有两个相关的模型 我正在尝试在产品中进行搜索 并且仅显示实际搜索结果 而不是找到该产品的类别的所有产品 我不想搜索任何类别 因为无论搜索什么或找到什么 类别都会始终显示 Example I have the following categ
  • 在 Python 中搜索文本文件并打印相关行?

    如何在文本文件中搜索关键短语或关键字 然后打印关键短语或关键字所在的行 searchfile open file txt r for line in searchfile if searchphrase in line print line
  • 有没有办法避免自动更新 Rails 时间戳字段?

    如果您有数据库列created at and updated at当您创建和更新模型对象时 Rails 将自动设置这些值 有没有办法在不接触这些列的情况下保存模型 我正在引入一些旧数据 我想根据 不同名称的 旧数据字段中的相应值设置这些值
  • yii2 无线电内联 Html 帮助器

    我在 yii2 中有这个 radioList Html radioList abc null new class gt form control input sm 它生成这个 div class radio 但我想要 div class r
  • 未知属性:user_id

    我在执行 current user stories build 期间收到错误未知属性 user id class User lt ActiveRecord Base has many stories class name Story for
  • Android:如何从网络异步获取搜索建议?

    我创建了一个可搜索的活动 现在 我想添加从网络服务获取的搜索建议 我想异步获取这些建议 根据添加自定义建议 http developer android com guide topics search adding custom sugge
  • PHP CSV VLookup

    我正在寻找一个 PHP 函数 它可以读取 CSV 文件并在第 1 列上执行 vlookup 以回显第 2 列中同一行的相关值 例如 如果 CSV 包含 Name Email John j email protected cdn cgi l
  • Codeigniter result_array() 返回一行

    在我的表中 我有两行 但是当我print r the data该模型函数连接到它只返回数据库中的第二行 为什么 型号功能 function getAllUsers query this gt db gt get users foreach
  • Apple 搜索 API:从 iTunes 获取应用程序支持的最低操作系统

    在苹果论坛上发布了此消息 但没有得到回复 我一直在使用苹果提供的查找API从iTunes获取应用程序元数据 然而 我注意到我正在构建的应用程序需要一条重要信息 兼容性信息不会作为响应的一部分显式返回 我们确实获得了支持的设备列表等 但没有获
  • 检索给定用户发表评论的所有帖子,Ruby on Rails

    我有用户 帖子和评论 用户只能对每个帖子发表一条评论 class User lt ActiveRecord Base has many posts has many comments end class Post lt ActiveReco
  • 模型视图演示者 - 被动视图 - 谁加载模型?

    我很好奇使用 MVP 模式来提高可测试性 我有 MVC 经验 但 MVP 似乎有所不同 我有一个在 项目 文件上运行的应用程序 该文件实际上是多个文件和文件夹的压缩存档 这个项目应该是我的模型 我将把加载模型的代码放在哪里 我还在考虑另一个
  • 在 Rails 中将一列添加到另一列之前

    我想在我的桌子前面放一个柱子我知道你可以做到 add column customer first name after last name 但有什么办法吗 before 您可以使用以下命令在表格前面插入一列 first option add
  • 我想知道像tineye.com这样的反向图像搜索服务是如何工作的......?

    像 TinEye 这样的反向图像搜索引擎如何工作 我的意思是进行图像搜索需要哪些参数 不知道 TinEye 是否使用这个 但是SURF http en wikipedia org wiki SURF是用于此目的的常用算法 在这里您可以看到一
  • 如何在 Rails 中对不同用户建模

    Question 我有一个带有内置授权和身份验证逻辑的用户模型 现在我意识到我拥有三种不同类型的用户 我想存储每个人的不同信息 Rails 中处理这个问题的最佳方法是什么 基于当前阅读的想法 我看过 STI 但从我读到的内容来看 它是不合适
  • ActiveRecord 和关联排序

    我有一个像这样的简单 AR 关联 Question has many answers Answer belongs to question with question id int 11 NOT NULL is accepted tinyi
  • Rails:has_many:通过还是has_many_and_belongs_to?

    我有一个应用程序 我想通过另一个模型将一个模型的实例链接到同一模型的另一个实例 即 Task1 gt Relationship 基本上 关系模型将具有额外的信息 关系类型 滞后 因此将其作为连接模型是理想的 然而 并没有两个模型可以加入 只
  • Yii2 DropDownList Onchange 更改自动完成小部件“源”属性?

    我已经尝试过这个 yii2 依赖的自动完成小部件 https stackoverflow com questions 27025791 yii2 dependent autocomplete widget 但我不知道为什么它不起作用 这是我
  • ActiveRecord::Enum - PG::InvalidTextRepresentation:错误:整数输入语法无效:

    我遇到了一个奇怪的错误 希望有人能指出我正确的方向 我有一个名为 组织 的模型和一个名为 组织 的属性department 请参阅下面的架构摘录 t integer department default 0 在我的模型内部已经定义了这个属性

随机推荐