文档章节

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

白狼栈
 白狼栈
发布于 2015/10/14 17:02
字数 554
阅读 423
收藏 1

作者:白狼 

出处: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();
 }

本文转载自:http://www.manks.top/article/yii2_common_problem_resolve

共有 人打赏支持
白狼栈
粉丝 18
博文 81
码字总数 30876
作品 0
杭州
私信 提问
当Yii遇上不支持pdo_mysql的服务器

(2014-10-9,在使用过程中仍发现不少问题,已迁移至https://github.com/xiilei/php-functions/tree/master/yii,不定期维护,下列代码不再更新) 这真是一件很郁闷的事情,项目的一个子项目(cm...

xilei
2014/03/28
0
2
记录Yii2框架开发遇到微信错误提示

转载地址 记录Yii2框架开发遇到微信错误提示 微信公共号开发,提示“该公众号暂时无法提供服务,请稍后再试”,如何解决? 以前使用Yii框架的时候,并没有像Yii2,以前的Yii框架似乎用起来在...

durban
07/22
0
0
linux下安装yii——遇到到问题和解决

由于PHP的很多高阶教材都是以LINUX作为基础,我也只好硬着头皮从WINDOWS转向LINUX,说实在的,这是个很痛苦到过程,从一个傻瓜 式到桌面系统转到一个繁琐到命令式系统,就像从移动电话时代回...

南国野兽
2012/11/24
0
0
yii2中如何使用modal弹窗之结合gridview的使用

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

白狼栈
2016/06/14
229
0
liufee/yii2-swoole

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

liufee
2017/12/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

docker部署springboot项目

安装docker 菜鸟教程 springboot项目 maven依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001......

yimingkeji
今天
10
0
ios多个target

1.建立3个target,分别为heroone,heroone test,heroone dev;分别为正式环境,test环境,dev环境 2.注意取消掉autocreate以防止名字不对,分别以Duplicate的方式建立另外两个scheme 3.创建...

HeroHY
今天
5
0
php获取客户端IP

php获取客户端IP 首先先阅读关于IP真实性安全的文章:如何正確的取得使用者 IP? 「任何從客戶端取得的資料都是不可信任的!」 HTTP_CLIENT_IP头是有的,但未成标准,不一定服务器都实现。 ...

DrChenXX
昨天
0
0
. The valid characters are defined in RFC 7230 and RFC 问题

通过这里的回答,我们可以知道: Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tom...

west_coast
昨天
1
0
刷leetcode第704题-二分查找

今天双十一买的算法书到货了,路上刷到有人说的这个题,借(chao)鉴(xi)一下别人的思路,这个是C++标准库里面的经典方法,思路精巧,优雅好品味 int search(int* nums, int numsSize, in...

锟斤拷烫烫烫
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部