You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii框架生成CRUD代码后主键参数引用错误问题咨询

原因说明

出现该问题主要有两个常见诱因:

  • 模型层主键配置错误
    Gii生成CRUD代码的逻辑依赖对应ActiveRecord模型的主键配置。如果你生成Country模型时,对应数据库表还未将code字段设为主键,或是生成模型时Gii读取了旧的表结构缓存,就会导致models/Country.php中的primaryKey()方法错误返回['id'],后续生成CRUD时自然会沿用id作为主键参数。
    你可以先检查Country.php文件中primaryKey()方法的返回值,确认和实际表主键匹配即可。
  • Gii默认模板的固定设定
    即便模型主键配置正确,Yii官方提供的默认CRUD生成模板硬编码了主键参数名为id,不管实际表主键是什么字段名,生成的控制器入参、视图跳转链接都会默认使用id作为参数名,属于模板的默认设计,并非功能故障。

规避方案

后续生成CRUD时可以提前做两处校验避免手动修改:

  1. 生成模型前确认表结构调整完毕,生成后先核对模型的主键、字段属性与数据库是否一致
  2. 可自定义Gii的CRUD生成模板,将主键参数的取值逻辑改为读取模型实际配置的主键字段,即可适配不同主键名的表。

内容的提问来源于stack exchange,提问作者Alan Sheers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:54:04