Yii2.0踩坑记(持续更新)

  1. ActiveForm表单提交后,通过网页中Network可知表单数据已经向控制器提交。但是,控制器中却接受不到数据。
    我遇到这个问题的原因是:在表单模型的类文件中没有给表单的属性设置规则,就是没有使用rules()方法对属性设置规则。以我遇到的问题为例:
public function rules()
{
     return [
          [['id', 'name', 'code', 'type'], 'required'],
     ]
}

只需要简单的这样写就可以在控制器中获取到表单数据了。经过测试,在该方法中注释掉的属性都无法穿到控制器中。


2.在ActiveForm表单中使用dropDownList,比如下面的代码:

类型:<?php echo $form->field($model, 'type')->dropDownList($class::$type,['prompt'=>'请选择', 'style' => 'with:120px', 'class' => 'form-control']) ?>

在页面中显示几条带选的选项,如果选择 '请选择' 这个选项,后项后台传入:

''  //空,并不是null

如果选择其他的选项,这传入的是每个选项对应的key,并使选项本身的value,这里是:

0 //第一个选项
1 //第二个选项
  //...

  1. 数据库在 连表查询 的时候,报如下错误:
Exception (Integrite constraint violation) 'yii\db\IntegrityException' with 
message 'SQLSTATE[23000]: Integrity constraint violation: 1052 Column 
'question_id' in where clause is ambiguous.
The SQL being executed was: SELECT COUNT(*) FROM `answer` LEFT JOIN `question` `q` ON `answer`.question_id = q.question WHERE `question_id` = '10''

这句话的主要意思是说,在 WHERE 子句中的 'question_id' 是模棱两可的。
为什么会产生这样的报错信息呢?因为在这两张表中均有 'question_id'字段,产生这样的错误是因为传给 SQL 语句的中,即 WHERE 子句中的 'question_id' 没有指明是哪个表中的,从而导致不知道去哪一张表中查询。
解决思路:给传入的字段 'question_id' 加上标识,区分是哪个表中的。
解决办法: 其实在Yii中已经封装了解决的办法。在 AnswerSearch.phpQuestionSearch.php 两个搜索模型的查询语句中加入

$query->andFilterWhere([
Answer::tableName(). '.question_id'  => $this->question_id
]);
$query->andFilterWhere([
Question::tableName(). '.question_id'  => $this->question_id
]);

即可区分两个表(模型)中的字段。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,309评论 19 139
  •   JavaScript 最初的一个应用,就是分担服务器处理表单的责任,打破处处依赖服务器的局面。   尽管目前的...
    霜天晓阅读 751评论 0 3
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,846评论 1 92
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,102评论 8 265
  • 今天下定决心把王者荣耀从手机里边卸载了。不知道从去年五月起手玩这个游戏到现在,我因为它荒废了多少时光,上班的时候偷...
    随风Jeff阅读 324评论 0 0

友情链接更多精彩内容