Yii:HAS_MANY 搜索

2024-02-02

我有以下表格:

user (id, cv_personal_data_id),
cv_personal_data (id, firstname, surname, gender, address, ...),
cv_laboral_exp (id, user_id, position, seniority,... ),
cv_study (id, user_id, name, institution, average, ...),
cv_language (id, user_id, language_name, writing_level, ...)

在我的用户模型中,我定义了以下关系:

    public function relations()
{
    return array(
        'cvLaboralExps' => array(self::HAS_MANY, 'CvLaboralExp', 'user_id'),
        'cvLanguages' => array(self::HAS_MANY, 'CvLanguage', 'user_id'),
        'cvStudies' => array(self::HAS_MANY, 'CvStudy', 'user_id'),
        'cvPersonalData' => array(self::BELONGS_TO, 'CvPersonalData', 'cv_personal_data_id'),
}

问题是:以公司身份登录,我需要显示一个列出所有用户的 CGridView,并能够通过相关表的任何字段进行搜索,例如“位置”(来自 cv_laboral_exp)、“语言名称”(来自cv_语言),等等。我似乎找不到搜索来自 HAS_MANY 关系的字段的解决方案。我尝试在 User 类的 search() 方法中将 'with' 语句添加到 $criteria 中,试图搜索用户劳动体验的位置,但没有成功:

                $criteria->compare('cvLaboralExps.position',$this->cvLaboralExps,true);
                $criteria->with = array('cvLaboralExps'=>array('select'=>'cvLaboralExps.position','together'=>true)); 

正如您所看到的,有很多关系构成了用户的简历。如果有人能帮助我解决这个问题,我将非常感激,即使这意味着更改数据库/模型结构。


您实际上需要为相关模型声明一个成员变量,如下所示User。你正在做的事情的问题是这个(在compare()) : $this->cvLaboralExps , here cvLaboralExps只是类的关系,而不是可以存储值的变量,因此比较的$value是空的。检查这一行,解释第二个参数$value, 在里面比较文档 http://www.yiiframework.com/doc/api/1.1/CDbCriteria#compare-detail:

如果字符串或数组为空,则不会修改现有的搜索条件。

可以通过声明模型的成员变量并修改compare()调用使用新变量。

...
class User extends CActiveRecord{
    // declare the variables that we need
    public $cvLaboralExpsLocal,$cvLanguages,$cvStudies;

    // now put these variables in rules array, so that massive assignment can be done, i.e. safe rule
    public function rules(){
         return array(
              // other rules ...
              array('attributesxyz, cvLaboralExpsLocal, cvLanguages, cvStudies', 'safe', 'on'=>'search')
         );
    }

    // other functions

    // the search can be kept just the way you have in the question but with the new variables
    public function search(){
          // other statements
          $criteria->compare('cvLaboralExps.position',$this->cvLaboralExpsLocal,true);
          $criteria->with = array('cvLaboralExps'=>array('select'=>'cvLaboralExps.position','together'=>true));
    }
}

注意: 1. 请记住更改 _search.php 表单以接受新变量。
2. 由于这是 has_many,因此您必须注意最终用户如何输入值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yii:HAS_MANY 搜索 的相关文章

  • 手动更改postgresql中查询的执行计划?

    是否可以在postgresql中手动更改执行计划的操作顺序 例如 如果我总是想在过滤之前进行排序操作 尽管这在 postgresql 的正常使用中没有意义 是否可以通过例如手动强制执行该操作改变运营的内部成本 如果我实现自己的功能呢 是否可
  • SQL命令文本到DataSet的直接方法

    如果我有 sql 命令 获取数据集的最直接途径是什么 string sqlCommand SELECT FROM TABLE string connectionString blahblah DataSet GetDataSet sqlCo
  • 在python中删除链表中的节点

    删除链表中的节点 这个实现有什么问题 def delete self val tmp self head prev None while tmp if val tmp data self size 1 if prev None self h
  • 如何将 .env 添加到 codeigniter?

    我尝试按照以下步骤使 php 连接到 Outlookhttps learn microsoft com en us outlook rest php tutorial https learn microsoft com en us outl
  • HTTP_REFERER 返回 NULL,$_SERVER 中不存在密钥

    使用以来第一次 SERVER HTTP REFERER 它给了我NULL因此 当我做var dump SERVER the HTTP REFERER密钥不存在 我还尝试使用不同的浏览器和不同的网站访问网站 但没有结果 该网站在基于 Linu
  • 如何销毁一个物体?

    据我所知 很少 有两种方法 var new object Then Method 1 Set to null var null Method 2 Unset unset var 还有其他更好的方法吗 我在这里吹毛求疵吗 您正在寻找unset
  • 正则表达式替换混合数字+字符串

    我想删除所有包含数字的单词 示例 LW23 London W98 String 从上面的字符串中我唯一想保留的是 London String 这可以用正则表达式来完成吗 我目前正在使用 Python 但 PHP 代码也很好 Thanks E
  • PHP,文本从数据库中回显,没有换行,全部一体

    我的数据库中有一个长文本 从 php mayadmin 来看它看起来很好 但是当我将它回显到页面时 它会丢失所有格式 即没有新行 全部都在一个块中 有任何想法吗 Thanks 可能是因为换行符是 n 并且 html 想要 br 所以使用nl
  • Postgres LIMIT/OFFSET 奇怪的行为

    我正在使用 PostgreSQL 9 6 我有一个这样的查询 SELECT anon 1 id AS anon 1 id anon 1 is valid AS anon 1 is valid anon 1 first name AS ano
  • 使用转义换行符和回车符取消转义字符串

    我正在尝试编写一个 PLPGSQL 函数来混淆 审查 编辑文本 Obfuscate a body of text by replacing lowercase letters and numbers with symbols CREATE
  • .htaccess 在动态文件夹名称中加载索引

    我在 htaccess 加载动态文件夹名称中的索引时遇到问题 这是我的目录结构 root products gt this is constant folder name 而不是使用 GET 获取产品 url root products i
  • 返回上一页

    我正在使用表格来 评价 页面 此表单将数据 发布 到其他地方的 php 脚本 我只是想在处理表单后显示一个链接 这将使用户返回到上一页 我可以在 php 脚本中使用 javascript 来执行此操作吗 GF 您可以使用链接来调用histo
  • 如何使用多个数据库设置 symfony 3 学说迁移?

    我在验证和更新模式时努力让 symfony doctrine 排除数据库视图 我第一次尝试没有教条迁移 看到这个问题 https stackoverflow com questions 46775200 symfony 3 doctrine
  • 将自定义参数传递给 Symfony2 中的自定义 ValidationConstraint

    我正在 Symfony2 中创建一个表单 表格只包含一个book字段允许用户在列表中进行选择Books实体 我需要检查是否选择了Book属于Author我的控制器里有 public class MyFormType extends Abst
  • PHP URL 验证

    我知道有无数的线程问这个问题 但我一直无法找到一个可以帮助我解决这个问题的线程 我基本上试图解析大约 10 000 000 个 URL 的列表 确保它们根据以下标准有效 然后获取根域 URL 此列表包含您能想象到的几乎所有内容 包括类似的内
  • 仅在 Chrome 上我收到此错误:Uncaught TypeError: Illegal constructor [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我在 Chrome 上加载 jQuery 时 我会收到此错误 Uncaught TypeError Illegal constr
  • 删除重复的行并需要在mysql中保留所有行中的一个[重复]

    这个问题在这里已经有答案了 我想删除基于两列的重复行 但需要保留所有行 1 行 重复行可以多于两行 例如 ID NAME PHONE 1 NIL 1234 2 NIL 1234 3 NIL 1234 4 MES 5989 我想从上面 3 行
  • 如何根据另一个下拉列表中的选择动态填充下拉列表中的选项?

    我有一个表 其中包含类别信息 例如产品 我已将它们列在下拉菜单中 现在 我需要做的是 在下一个下拉菜单中列出所选类别的子类别 我希望 javascript 是必需的 但我对 javascript 还不太熟悉 将非常感谢您的帮助 你应该使用
  • Apache 2.4.9 在启用 ssl 模块并设置 ssl 证书后失败

    Apache 在尝试设置 ssl 证书后抛出以下错误 ssl emerg pid 30907 AH02572 Failed to configure at least one certificate and key for localhos
  • PHP 文件上传帮助

    div align center div 这是我的代码

随机推荐

  • 同时进行网页插入

    我们开发了一个在线测验 用户可以注册一个团队来参加测验 在 asp 中会检查该团队名称是否已提交 如果已提交 则会生成错误 我们注意到一个问题 如果两支球队在同一时间以相同的名称注册 则两支球队都注册了 尽管这种情况不太可能发生 但我们想知
  • 如何比较以逗号分隔的两个列值?

    我有一个包含特定列的表 其中有一列包含逗号分隔的值 例如测试 考试 结果 其他 我将传递一个字符串 例如结果 样本 未知 额外作为存储过程的参数 然后我想通过检查该字符串中的每个短语来获取相关记录 例如 TableA ID Name Wor
  • GCM 不致力于姜饼,但致力于冰淇淋三明治

    我正在编写一个使用 GCM 消息的游戏 当一名玩家进入服务器的回合移动时 服务器将向其对手发送一条 GCM 消息 让该客户端知道有额外的回合数据可用 这应该很简单 我已尽可能严格地遵循示例 GCM 客户端代码 我有两台设备用于测试 带冰淇淋
  • 使用 PyCrypto AES 进行 Python 加密

    我今天刚刚发现 pycrypto 并且一直在研究我的 AES 加密课程 不幸的是 它只起到了一半的作用 self h md5 以十六进制格式输出 md5 哈希值 大小为 32 字节 这是输出 它似乎解密了消息 但它在解密后放置了随机字符 在
  • IE11 无法通过 Web 服务器显示带有对象标记的图像,但在本地正常

    问题 通过对象标签将图像设置作为数据查看时 Internet Explorer 11 在通过 Web 服务器查看时不会显示该图像 这是完整的代码 div style width 200px height 100px img src squa
  • 为什么串联的 RequireJS AMD 模块需要加载程序?

    我们在开发过程中喜欢 RequireJS 和 AMD 在这里我们可以编辑模块 在浏览器中点击重新加载 然后立即看到结果 但是 当需要将我们的模块连接到单个文件以进行生产部署时 显然必须有一个 AMD 加载器仍然存在 无论该加载器是 Requ
  • Python:查找字符串中的单词

    我想在字符串中找到这个单词 如下所示 kkk I do not like that car if like in kkk print like elif dislike in kkk print dislike elif hate in k
  • Laravel 忽略变异器

    我正在使用 Laravel 的 Mutator 功能 并且我有以下 Mutator public function setFirstNameAttribute value this gt attributes first name strt
  • systemctl 状态显示 inactive dead

    我正在尝试编写自己的 简单 systemd 服务 该服务执行一些简单的操作 例如使用 shell 脚本将数字 1 到 10 写入文件 我的服务文件如下所示 Unit Description NandaGopal Documentation
  • 如何在我的类中实现前置和后置自增/自减运算符?

    我想要超载 运算符在我的 c 类中使用运算符重载来使用预增量和后增量 但只有后增量才有效 如何使这两个功能在我的班级中起作用 假设我做了一个 ABC 类 比如 using System using System Collections Ge
  • 设置变换后图像的宽度和高度:旋转

    i have a div with width 190px and height 260px i assign img tag on that div when i upload an image that shows how the im
  • cmd编程中的速度和时间问题

    最近存在一个问题 即如何将具有用户预定义文件类型扩展名的许多文件从一个文件夹移动到许多不同的文件夹 这些文件夹是根据文件名中的密钥字符串 年份 立即创建的 此外 当移动到新创建的文件夹时 文件应在没有用户预定义文件类型扩展名的情况下保存 文
  • 指针变量只是带有一些运算符的整数还是“符号”?

    编辑 最初的单词选择令人困惑 象征性 这个词比原来的 神秘的 要好得多 在关于我之前的 C 问题的讨论中 我被告知指针是 类似于整数的简单值类型 https stackoverflow com questions 32043314 over
  • python asyncio aiohttp 超时

    注意事项 这是我第一次使用 asyncio 所以我可能做了一些非常愚蠢的事情 场景如下 我需要 http ping 一个巨大的 url 列表来检查它们是否响应 200 或任何其他值 尽管像 gobuster report 200 403 等
  • 如何使用重构从类中删除泛型类型

    我有这门课 public class TimeIntCo
  • 搜索多个字符串

    我知道在文件 kmp 中查找一个字符串或在文件 trie 中查找各种字符串的有效方法 但是 多年来 我一直想知道是否有一种方法 有时认为不可能 在多个文件中搜索多个字符串 假设我有一百万个文件 我想回答诸如 查找包含字符串 香蕉 摩托艇 和
  • Pyspark结构化流Kafka配置错误

    我之前已经成功地将 pyspark 用于 Spark Streaming Spark 2 0 2 和 Kafka 0 10 1 0 但我的目的更适合结构化流 我尝试使用在线示例 https spark apache org docs 2 1
  • 微服务横向扩展数据库的最佳实践或设计

    微服务的主要好处是可以通过使用多个容器实例和负载平衡来扩展一种服务 类型 以提高吞吐量 但有一件事是 服务类型 的多个实例 即容器 共享同一个数据库实例 当多个实例在该数据库实例上写入 读取时 这可能会造成性能瓶颈 传统上 我们会扩展该数据
  • 使用 css 显示/隐藏 html 表格列

    我想显示一个基本的 html 表 其中包含用于切换显示 隐藏附加列的控件 table tr th Column 1 th th class col1 1a th th class col1 1b th th Column 2 th th c
  • Yii:HAS_MANY 搜索

    我有以下表格 user id cv personal data id cv personal data id firstname surname gender address cv laboral exp id user id positi