如何在 Yii2 中的 ON 条件中使用常量 hasMany 关系

2024-01-23

我尝试创建一个多态关联,这在 Rails 中很常见,但不幸的是在 Yii2 中却不是。作为实现的一部分,我需要定义关系:

public function getImages()
{
   return $this->hasMany(RecipeImage::className(), 
       ['imageable_id' => 'id', 'imageable_type' => 'Person']);
}

但这不起作用,因为“Person”被视为当前模型的属性,但它是一个常量(多态关联的类名)。

如果我尝试使用“andWhere”,它当然会在 WHERE 子句而不是 ON 子句中添加条件,导致仅返回具有现有图像的记录。

public function getImages()
{
   return $this->hasMany(RecipeImage::className(), ['imageable_id' => 'id'])->
       andWhere(['imageable_type' => 'Ingredient']);
}

我如何定义这种关系?没有 andOn 方法。


在这种情况下,您可以使用以下命令修改 ON 条件andOnCondition method:

public function getImages()
{
    return $this->hasMany(RecipeImage::className(), ['imageable_id' => 'id'])
        ->andOnCondition(['imageable_type' => 'Person']);
}

官方文档:

  • 和条件: http://www.yiiframework.com/doc-2.0/yii-db-activequery.html#andOnCondition%28%29-detail
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Yii2 中的 ON 条件中使用常量 hasMany 关系 的相关文章

  • 根据数据库结果设置 Yii2 catchAll 路由

  • Yii2 如何将 SUM SQL 函数转换为查询生成器?

    我有这个简单的 SQL 查询 SELECT product name SUM product amount FROM orders GROUP BY product name 它将显示一个包含产品名称及其数量的列表 就像这个例子 我想将其转
  • 页面重定向后 Yii2 用户身份丢失

    我正在 yii2 中进行用户登录 但不是使用活动记录 而是由另一台服务器处理用户用户名和密码的验证 因此 以下是我所做的解决方法 in LoginForm php 我做了一些改变validatePassword which apiRest
  • Laravel-多对一多态关系

    我正在使用 Laravel 5 1 场景如下 此为示例 真实场景与此示例类似 我有3个型号 大学 学生 Teacher 一所学院可以有很多学生 但一个学生只能属于一所学院 一所学院可以有多名教师 但一名教师只能属于一所学院 我想在 lara
  • 日志在 yii2 中不起作用

    我想在 app log 中添加日志 我的配置文件 log gt traceLevel gt YII DEBUG 3 0 targets gt file gt class gt yii log FileTarget levels gt err
  • 在 Active Record 中使用 find() 和多个 where 子句

    我想将 Active Record 查询后的内容 使用括号 分为 3 组 第一组是从第一个 Where 子句到最后一个 orWhere 第二个和第三个将使用 andWhere 请给我关于如何使用括号分隔所有 3 个部分的建议 query B
  • Rails 模型范围内的关联数据

    我有一个名为Post 博客文章 和一个名为Category 每个帖子belongs to一个类别 每个类别都有一个名为retainer指定帖子 过期 之前的时间量 例如movies category retainer 30 days 我想做
  • 如何获取Yii2和DbManager中特定角色的用户?

    如何在RBAC中获取Yii2和DbManager中特定角色的用户 请介绍一些用于用户管理和角色管理的API 我搜索并阅读Yii2 指南 http www yiiframework com doc 2 0 guide index html但我
  • 在 Yii2 中通过 Ajax 上传不包括文件

    我正在尝试通过 Ajax 请求上传图像 似乎遇到了类似的问题这个问题 https stackoverflow com questions 32055274 upload ajax file in yii2但它没有答案 我不确定它们是否完全相
  • Bower/bower-asset 在 yii2 等 php 应用程序中扮演什么角色

    最近我部署了一些项目 例如trntv yii2 starter kit https github com trntv yii2 starter kit 等等 但所有应用程序都在 vendor bower 而不是 vendor bower b
  • 如何在yii2高级模板中上传web文件夹中的文件?

    我尝试在后端上传文件 每次上传文件时 它都会成功上传并成功保存在数据库中 但它没有保存到我指定的目录中 因此我的应用程序找不到该文件 并且我已经给出了 777对 web 目录中的 uploads 文件夹的权限 下面是我的代码 处理和保存文件
  • 如何解决三向多态关联?

    首先我要说我正在使用 MySQL 不是事务型 并且这是无法更改的 另外 为了简洁和清晰起见 我简化了此处的表格 在此示例中 课程 由其内部属性和外部属性及其自己的属性 阅读 组成 阅读 有其自己的关键依赖属性和三个不同的外部属性 阅读源 我
  • ActiveForm,用于字段损坏验证的自定义 ID

    我对 Yii2 还很陌生 并且遇到了下一个不愉快的问题 我在同一页面创建了两个表单 例如
  • 如何将Stripe支付集成到Yii2中?

    我有以下代码 它运行时没有错误 但它不会将资金插入到 Stripe 服务器上 Stripe 库已正确安装 配置文件
  • 关于 Yii2 RBAC 的疑惑

    到目前为止 我一直在使用 Yii 1 1 14 开发 Web 应用程序 但现在是时候进行升级了 我工作的公司开发了自己的访问控制系统 我对它真的很满意 直到我看到它到底是什么样子 数据库中8个表的组合 不包括用户表 还有一堆外键 1 个控制
  • 主干关系有许多最佳实践

    我是 Backbone 关系新手 我不确定使用 HasMany 的正确方法是什么 我有一个Parent模型有很多children 许多 是指成千上万的孩子 为了避免性能问题 我通过外键查询子项 child parent 1 而不是创建一个巨
  • 在 Yii 2.0 中添加 jquery

    如何在 Yii 2 0 中将 jQuery 添加到我的页面 在 Yii 1 x 中你可以使用 Yii app gt clientScript gt registerCoreScript jquery 我已经尝试用自己的 View 类重写并尝
  • 在yii2的视图中添加模型中没有的自定义字段

    我在 yii2 中保存表单时遇到问题 我创建了一个自定义字段 其名称与其他字段相同Myposts categoryLevel2 该字段不在模型中 它是一个条件字段 当我发布我的内容时 我将其值分配给模型属性 例如 categoryLevel
  • 在 yii2 gridview 中输入时进行过滤

    我需要在您键入时过滤网格视图 默认情况下 仅当按下回车键时才进行过滤 您应该使用自己的 js 来处理这个问题 例如 this gt registerJs body on keyup yiiGridView grid id filters i
  • Yii2迁移问题

    我是第一次使用 yii2 我想尝试 yii 迁移 问题 我创建了迁移文件 php yii migrate create new table 文件已创建 然后我将新表详细信息输入到迁移文件中 当我跑步时php yii migrate我收到错误

随机推荐

  • 拖放按钮 tkinter python

    我是在 python 上使用 tkinter 的新手 我想开发一个程序 可以拖放一个按钮并按下另一个按钮 我将尝试解释 我有按钮 A 它将创建一个新按钮 B 我想将 新建 按钮拖到另一个地方 任何帮助 谢谢 The tkinter dnd
  • jsTree 对象没有方法 addBack

    这是我的 jsTree 实例化代码 folder tree jstree themes theme default dots true icons true json data ajax url portal folders data fu
  • Android - 两个 onClick 监听器和一个按钮

    我有一个可点击的自定义 TextView 它定义了自己的 onClick 处理程序 以便根据点击更改其外观 但是 如果我随后在活动中定义第二个 onClick 处理程序以便根据单击的按钮执行某些操作 则仅调用其中一个 onClick 函数
  • 为 NixOS 打包 jetbrains-toolbox

    我正在尝试使用jetbrains 工具箱 https www jetbrains com toolbox app 在 NixOS 上 下载的是单个 ELF 二进制文件 我用它修复了 patchelf set interpreter nix
  • [Batch]循环直到按下某个键

    我想做的是循环直到按下 x 我知道CHOICE与 T选项 But CHOICE我想要播放的动画超时时间太长 这是一个例子 echo off cls set frame 2 loop cls type frame txt Here is wh
  • 是否可以根据文件类型使用不同的主题?

    是否可以根据文档类型运行主题 例如 我想要一个用于 js html 的主题 另一个用于 md 文件的主题 这不再是正确的答案 请参阅另一个允许您执行问题所要求的软件包的答案 我试图删除这个答案 但无法做到这一点 因为它是目前接受的答案 不
  • C# 添加浮点数表现得很奇怪[重复]

    这个问题在这里已经有答案了 我正在尝试添加一行单元格并在网格中的新单元格中显示总计 我正在使用 DevExpress 的 gridControl 该网格有 12 列 代表一年中的月份 我想添加月份值并在第 13 列中显示总数 我的问题是 如
  • 调试 VBA 中的空格

    我的表格中有一个单元格 内容如下 641233 之后有某种空格 我认为这是一个空格 所以在我的 vba 代码中 我尝试了多种方法来将这个空格从字符串中取出 但都没有application trim nor replace work With
  • 为什么多个 WHERE 条件会减慢查询而不是加快查询速度?

    问题在于 与使用一两个条件而不是全部三个条件运行的查询相比 所讨论的查询运行速度非常慢 现在查询 Select Count From SearchTable Where Date gt 8 1 2009 AND Zip In Select
  • 缩放 CSS/JavaScript

    我想知道如何通过javascript控制缩放属性 像 div style top 一样 如何指定缩放 Firefox 和 Chrome Webkit 相当于 IE 特定的zoom属性分别是 moz transform https devel
  • 将数组的一部分向右移动的最快方法

    我需要在一个小数组中的给定索引处 插入 一个元素 即 将所有索引较大的元素向右移动 1 位 在 NET 中最快的方法是什么 注意 我添加了自己的答案 但我仍在寻找解释和更快的替代方案 编辑 我确实需要一个数组 而不是List
  • 为什么后台任务会阻止 SimpleHTTPServer 中的响应?

    我正在编写一个简单的基于浏览器的前端 它应该能够启动后台任务 然后从中获取进度 我希望浏览器收到一个响应 说明任务是否成功启动 然后轮询以确定任务何时完成 但是 后台任务的存在似乎会阻止立即发送 XMLHttpRequest 响应 因此我无
  • 无法在 Swift 中调用 Objective C 类方法

    我的项目是用 swift 语言编写的 我在项目中使用过可可豆荚 我使用可可豆荚将 HDAlerts 集成到我的项目中 HDAlerts位于objective c中 因此我在项目中添加了objective c桥接标头并在其中导入了Alerts
  • 我怎样才能让它工作。我尝试授予 sudo 权限

    我目前正在使用linux 并尝试使用 sudo 权限启动应用程序 但没有成功 我刚刚安装了 expo cli 并创建了新项目 当我启动应用程序时 表明 错误信息 Failed to construct transformer Error E
  • 使用 node.js 的服务器端 Mustache.js 示例

    我正在寻找一个使用的例子Mustachejs with Nodejs 这是我的例子 但它不起作用 Mustache未定义 我正在使用 master 分支的 Mustachejs var sys require sys var m requi
  • 无法解析符号 newRequestQueue - Volley

    我在 MainActivity 文件中有这段代码 RequestQueue queue new Volley newRequestQueue this 并且由于某种原因newRequestQueue部分是红色的 当我将鼠标悬停在它上面时 我
  • 表达与陈述

    我问的是关于 c 的问题 但我认为它在大多数其他语言中都是一样的 有谁有一个好的定义表达式 and 声明区别是什么 表达 评估某个值的东西 例子 1 2 x 陈述 执行某事的一行代码 例子 GOTO 100 在最早的通用编程语言 如 FOR
  • 即使 FetchMode = Join,Hibernate 也会发出 select 语句

    我有一个与国家 地区实体映射的 userAccount 实体 UserAccount 类中的国家 地区映射如下 ManyToOne fetch FetchType EAGER Fetch FetchMode JOIN JoinColumn
  • 在使用 window.open 打开的窗口中使用 document.write 编写的脚本元素不会在 Windows 7 上的 IE8 中执行

    我遇到了一个似乎只出现在 Windows 7 上的问题 它似乎在不同版本的 Windows 上的 IE8 中工作正常 基本上 我使用 window open 创建一个新窗口 然后使用 document write 写入该新窗口的内容 其中包
  • 如何在 Yii2 中的 ON 条件中使用常量 hasMany 关系

    我尝试创建一个多态关联 这在 Rails 中很常见 但不幸的是在 Yii2 中却不是 作为实现的一部分 我需要定义关系 public function getImages return this gt hasMany RecipeImage