文档章节

yii2开发遇到的问题以及解决方案

白狼栈
 白狼栈
发布于 2015/10/14 17:02
字数 554
阅读 416
收藏 1
点赞 0
评论 0

作者:白狼 

出处:http://www.manks.top/article/yii2_common_problem_resolve 

本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


yii2 遇到的问题解决

1、测试项目列表,id搜索,显示

1052 Column 'id' in where clause is ambiguous
The SQL being executed was: SELECT COUNT(*) FROM `test_items` LEFT JOIN `test_cat` ON `test_items`.`test_cat_id` = `test_cat`.`id` WHERE `id`=‘1'

解决方式:

TestItemsSearch.php search方法关于id的搜索前面增加表名,

//当前表 test_items,连接表 test_cat
$query = TestItems::find();
$query->joinWith(['testCat']);
......
$query->andFilterWhere([
    'test_items.id' => $this->id, //注意到这里id前面添加表名以便区分哪个表的id
    ...... //其他代码照写
]);

2、DetailView  ‘content:ntext’,这种的attribute带标签,但是在DetailView就是想按照html的样式显示,怎么搞喃?

<?= DetailView::widget([
    'model' => $model,
    'attributes' => [
        'desc:ntext', //gii 默认生成text字段:
        [
            'attribute' => 'desc',
            'format' => 'html', //显示html样式的方案
            'value' => $model->desc,
        ],
    ],
]) ?>

源码追踪:

//yii\widgets\DetailView;
//yii\i18n\Formatter.php
//查看DetailView,找到 yii\i18n\Formatter.php文件,各种format都可以解决:
public function format($value, $format)
{
    ......
    $method = 'as' . $format;
    ......
}
......
public function asHtml($value, $config = null)
{
    ......
}

3、DetailView,显示的内容添加链接可以跳转,类文件同问题2,解决犯案如下:

DetailView::widget([
    'model' => $model,
    'attributes' => [
        ......
        [
            'attribute' => '用户',
            'format' => 'raw',
            'value' => Html::a($model->name, ['user-login/view', 'id' => $model->uid]),
        ],
    ],
]);

4、yii2脚本自动执行的时候,服务器上执行crontab -e 打开文件添加执行命令即可

5、问题:取分组中每组中最新的数据

原解决方案(效率很低)

select `id`, `test_items_id`, `create_time`, `score` from `test_result` where id in (select SUBSTRING_INDEX(GROUP_CONCAT(id order by `id` desc),',',1) FROM `test_result` where `uid` = {$uid} group by test_items_id 
) 
order by `id` desc

优化方案(仍然很慢,但是有效果):

select `id`, `test_items_id`, `create_time`, `score` from `test_result` where id in (select max(id) FROM `test_result` where `uid` = {$uid} group by test_items_id 
) 
order by `id` desc

二次优化方案(拆分sql):

$db = Yii::app()->db;
$sql = "select max(`id`) m 
FROM `test_result` where `uid` = {$uid} 
group by `test_items_id`;$res = $db->createCommand($sql)->queryAll();
$temp = '';
if ($res)
{
    foreach ($res as $v)
    {
        $temp .= $v['m'].',';
    }
    $temp = rtrim($temp, ',');
    
    $sql = "select `id`, `test_items_id`, `create_time`, `score` from 
       `test_result` where id in ({$temp}) order by `id` desc";
    $lastInfo = $db->createCommand($sql)->queryAll();
 }

© 著作权归作者所有

共有 人打赏支持
白狼栈
粉丝 17
博文 78
码字总数 30876
作品 0
杭州
yii2中如何使用modal弹窗之结合gridview的使用

作者:白狼 出处:http://www.manks.top/document/easyblogmanage_system.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究...

白狼栈 ⋅ 2016/06/14 ⋅ 0

liufee/yii2-swoole

yii2 swoole 让yii2运行在swoole上。如果您在使用中遇到问题或者想学习yii2结合swoole可以加qq群258780872一起讨论 性能 运行在swoole上的yii2是运行在php-fpm上yii2的5倍以上,而且一句代码...

liufee ⋅ 2017/12/26 ⋅ 0

yii2开发中19条推荐实践(阿北总结)

虽然每个人的编程风格不同,但是有些建议能让你的代码更加规范和稳定,本次就我这次网站更新总结如下几点,希望对你的yii2学习和使用有所帮助。 环境说明 服务器环境: CentOS 开发环境及IDE...

阿北2017 ⋅ 06/02 ⋅ 0

yii2 tree manger 结合girdview的使用方法一种变通解决方案

本文网址:http://my.oschina.net/bubifengyun/blog/605908本文改进版在:https://my.oschina.net/bubifengyun/blog/776979 第十八章 treeview跟Gridview的结合 一、功能设想 yii2做的网站,...

不避风云 ⋅ 2016/01/20 ⋅ 8

Yii2 RC 版本发布下载,三年磨一剑!

今天YII2.0 RC版本已经发布,此版本现已提供下载: https://github.com/yiisoft/yii2/releases/tag/2.0.0-rc Yii 当前有两个主要版本:1.1 和 2.0。 1.1 版是上代的老版本,现在处于维护状态...

chinaphp ⋅ 2014/09/28 ⋅ 48

小紫羽/yii2-fast-api

yii2-fast-api yii2-fast-api是一个Yii2框架的扩展,用于配置完善Yii2,以实现api的快速开发。 此扩展默认的场景是APP的后端接口开发,因此偏向于实用主义,并未完全采用restfull的标准,方便...

小紫羽 ⋅ 2017/01/20 ⋅ 0

Yii2 实例管理

Yii2 实例管理 Yii2框架没有提供类似ZendFramework3中提供的ServiceManager.那么Yii2框架是如何管理对象实例的呢? 长时间使用Yii2框架的童鞋一定已经适应了对象中的public变量,以及一个来自y...

Vett ⋅ 2017/12/23 ⋅ 0

yii2 modal弹窗之ActiveForm ajax表单异步验证

作者:白狼 出处:http://www.manks.top/yii2modalactiveform_ajax.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责...

白狼栈 ⋅ 2016/06/19 ⋅ 0

图片导入的实现

参考网页:+ https://github.com/bupy7/yii2-gridify-view+ http://demos.krajee.com/dialog 设想 用户点击朋友圈,可以选择更改头像。弹出对话框,选择头像。为简便,不增加剪切等功能,只提...

不避风云 ⋅ 2016/10/15 ⋅ 0

Yii2使用$this->context获取当前的Module/Controller/Action

使用Yii2的时候,在某些场景和环境下需要获得Yii2目前所处于的module(模型)、Controller(控制器)、Action(方法),以及会调用控制器里面已经定义过的一些公共的方法等.对于这些问题Yii2可以在视...

botkenni ⋅ 06/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

磁盘管理—逻辑卷lvm

4.10-4.12 lvm 操作流程: 磁盘分区-->创建物理卷-->划分为卷组-->划分成逻辑卷-->格式化、挂载-->扩容。 磁盘分区 注: 创建分区时需要更改其文件类型为lvm(代码8e) 分区 3 已设置为 Linu...

弓正 ⋅ 22分钟前 ⋅ 0

Spring源码解析(六)——实例创建(上)

前言 经过前期所有的准备工作,Spring已经获取到需要创建实例的 beanName 和对应创建所需要信息 BeanDefinition,接下来就是实例创建的过程,由于该过程涉及到大量源码,所以将分为多个章节进...

MarvelCode ⋅ 42分钟前 ⋅ 0

a href="#"

<a href="#">是链接到本页,因为你有的时候需要有个链接的样式,但是又不希望他跳转,这样写,你可以把这个页面去试试

颖伙虫 ⋅ 49分钟前 ⋅ 0

js模拟栈和队列

栈和队列 栈:LIFO(先进后出)一种数据结构 队列:LILO(先进先出)一种数据结构 使用的js方法 1.push();可以接收任意数量的参数,把它们逐个推进队尾(数组末尾),并返回修改后的数组长度。 2....

LIAOJIN1 ⋅ 49分钟前 ⋅ 0

180619-Yaml文件语法及读写小结

Yaml文件小结 Yaml文件有自己独立的语法,常用作配置文件使用,相比较于xml和json而言,减少很多不必要的标签或者括号,阅读也更加清晰简单;本篇主要介绍下YAML文件的基本语法,以及如何在J...

小灰灰Blog ⋅ 57分钟前 ⋅ 0

IEC60870-5-104规约传送原因

1:周期循环2:背景扫描3:自发4:初始化5:请求6:激活7:激活确认8:停止激活9:停止激活确认10:激活结束11:远程命令引起的返送信息12:当地命令引起的返送信息13:文件传送20:响应总召...

始终初心 ⋅ 今天 ⋅ 0

【图文经典版】冒泡排序

1、可视化排序过程 对{ 6, 5, 3, 1, 8, 7, 2, 4 }进行冒泡排序的可视化动态过程如下 2、代码实现    public void contextLoads() {// 冒泡排序int[] a = { 6, 5, 3, 1, 8, 7, 2, ...

pocher ⋅ 今天 ⋅ 0

ORA-12537 TNS-12560 TNS-00530 ora-609解决

oracle 11g不能连接,卡住,ORA-12537 TNS-12560 TNS-00530 TNS-12502 tns-12505 ora-609 Windows Error: 54: Unknown error 解决方案。 今天折腾了一下午,为了查这个问题。。找了N多方案,...

lanybass ⋅ 今天 ⋅ 0

IDEA反向映射Mybatis

1.首先在pom文件的plugins中添加maven对mybatis-generator插件的支持 ` <!-- mybatis逆向工程 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-ma......

lichengyou20 ⋅ 今天 ⋅ 0

4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例

准备磁盘分区 fdisk /dev/sdb n 创建三个新分区,分别1G t 改变分区类型为8e 准备物理卷 pvcreate /dev/sdb1 pvcreate /dev/sdb2 pvcreate /dev/sdb3 pvdisplay/pvs 列出当前的物理卷 pvremo...

Linux_老吴 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部