码迷,mamicode.com
首页 > 其他好文 > 详细

Yii——关于无主键的数据表或视图

时间:2018-09-07 11:56:32      阅读:400      评论:0      收藏:0      [点我收藏+]

标签:select   解决   示例   not   code   hat   lstat   tab   ret   

使用 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——关于无主键的数据表或视图

标签:select   解决   示例   not   code   hat   lstat   tab   ret   

原文地址:https://www.cnblogs.com/alanabc/p/9603548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!