Yii——关于无主键的数据表或视图
Posted alanabc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yii——关于无主键的数据表或视图相关的知识,希望对你有一定的参考价值。
使用 yii 写 restful api 时,有一个数据库视图因为没有主键而不能被正确的按主键查询。通常情况下可以通过类似 ViewName::findOne([‘primaryKey‘ => 1])
的方法,指定一个查询字段。
但是这不是最方便的解决办法,我们可以在模型(Model)中可以手动设置一个主键,然后就可以愉快的使用 ViewName::findOne(1)
查询了:
错误示例
public static function primaryKey()
{
return ‘primaryKey‘;
}
报错
SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘p‘ in ‘where clause‘ The SQL being executed was: SELECT * FROM `view_name` WHERE `p`=‘1‘
可见只把 ‘primary‘ 的首字母 ‘p‘ 给拿出来了,并不是我们希望的主键。
正确示例
public static function primaryKey()
{
return [‘primaryKey‘];
}
原因
大概算是个 feature,源码中有官方注释:
Note that an array should be returned even for a table with single primary key.
具体原因还需要再深究一下,欢迎请补充!
以上是关于Yii——关于无主键的数据表或视图的主要内容,如果未能解决你的问题,请参考以下文章