YII--杂记(1)

本篇文章主要记录工作中遇到的问题及解决办法。

1、按多个条件排序

场景:按时间和记录状态排序,其中记录状态有1,2,3但是1和2是一类不排序,3排到最后。

代码实现:

$list = UserFeedbackRecord::find()
            ->select('feedback_sheet_id,describe,submit_time,feedback_state')
            ->where(['vin'=>$data['vin']])
            ->where(['feedback_state'=>[1,2]])
            ->orderBy('submit_time desc')
            ->asArray()
            ->all();

$list2 = UserFeedbackRecord::find()
            ->select('feedback_sheet_id,describe,submit_time,feedback_state')
            ->where(['vin'=>$data['vin']])
            ->where(['feedback_state'=>3])
            ->orderBy('submit_time desc')
            ->asArray()
            ->all();

 $list=array_merge($list,$list2);

解释:可以先按时间查找状态为1和2的记录然后在查找状态为3的记录,最后将两次查到的结果合并。

2、合并、分割数组

//合并数组
$list=array_merge($list,$list2);

//分割数组,三个参数分别为原数组,起始下标,个数
$new_list=array_slice($list,($page-1)*$pagecount,$pagecount);

3、更新数据

UserFeedbackRecord::updateAll(['feedback_state'=>2],['feedback_sheet_id'=>$data['feedback_sheet_id']]);

两个参数,第一个更新的字段及值,第二个为条件,可以为多个条件。

4、为继承ActiveRecord的model添加新的属性。

场景:有时候需要返回给客户model中没有定义的信息。此时需要给model添加新的属性。并将数据存储到model对象中返回给客户端。

代码实现:重写attributes ()方法

public function attributes ()
{
    $attributes = parent::attributes();
    $attributes[] = 'unread_number';
    $attributes[] = 'submit_msg';
    $attributes[] = 'reply_msg';
    return $attributes;
}

5、controller返回查询结果,view用table展示。

//controller
return $this->render('view', [
            'model' => $submit_msg,
            'reply_msg'=>$reply_msg
        ]);

//view
<table width="90%" class="table">
        <tr>
            <td>回复人</td>
            <td>消息内容</td>
            <td>回复时间</td>
        </tr>
        <?php
        foreach ( $reply_msg as $rs ) {
            ?>
            <tr>
                <td><?php
                    if($rs['reply_people']==1){
                        echo "管理员";
                    }else{
                        echo "用户";
                    }
                    ?></td>
                <td><?php echo $rs['message'];?></td>
                <td><?php echo $rs['reply_time'];?></td>
            </tr>
            <?php
        }
        ?> 
</table>


//推荐一个简单好看的CSS样式,不然原始表格样式好丑
<style type="text/css">
    table
    {
        border-collapse: collapse;
        margin: 0 auto;
        text-align: center;
    }
    table td, table th
    {
        border: 1px solid #cad9ea;
        color: #666;
        height: 30px;
    }
    table thead th
    {
        background-color: #CCE8EB;
        width: 100px;
    }
    table tr:nth-child(odd)
    {
        background: #fff;
    }
    table tr:nth-child(even)
    {
        background: #F5FAFA;
    }
</style>

6、当table内容过多时,滑动条滑动展示。

解决方法,在table外面加一个div,操作div。设定div高和overflow-y:auto属性。如下:

<div style="height:290px;width:100%;display:block;overflow-y:auto;">
    <table></table>
</div>

样式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值