【发布时间】:2020-01-20 16:43:17
【问题描述】:
我已经显示(仅显示,不完整的 CRUD)查询的结果,其构建如下:
SELECT SUM(a) AS ab, b, COUNT(*) as C
FROM x
INNER JOIN y
ON y.a = x.a
WHERE b=123
GROUP BY b
所以我在 SearchModels search() 方法中使用 ActiveRecord 构建了这个查询。
在表 a 的模型中,我添加了一个 hasOne()-relation。
为了显示这个查询的数据,我使用了 GridView。在它的列数组中,我使用 y.b 等等...
我的问题:表 x 中的列显示正确,但是对于表 y 中的每个“连接列”它显示(未设置)。
如果我打印由 ActiveRecord 构建的查询,并在我的 sql 客户端中执行它,它显示所有数据。
我想这取决于 Models primaryKey() 函数,但我无法更改它以使表格正常工作。有人知道我的问题的解决方案吗,或者为什么 dataProvider/GridView 会处理所选模型(在本例中为表 x 的模型)primaryKey() 方法(或如何使 dataProvider/GridView 忽略 primaryKey()?
【问题讨论】:
-
ActiveRecord要求relationName.property/columnName打印相关数据,而不是连接中使用的表别名。 -
问题是,连接的表甚至没有出现在 $dataProvider 中
-
请显示实际代码(您是如何构建此查询的)-您的抽象示例隐藏了实际问题。
标签: php activerecord gridview yii2