小编Art*_*rth的帖子

Yii2 Gridview:如何对多列进行排序?

假设我有许多在不同时间创建的彩色球,我希望在 GridView 中显示它们。

  • 球 - id、颜色、created_at

填充为:

1, red   , 2010-10-09
2, blue  , 2010-11-08
3, blue  , 2010-09-01
4, red   , 2010-06-15 
Run Code Online (Sandbox Code Playgroud)

默认情况下,我希望首先显示最新的球,但我也希望能够按颜色对球进行排序,因此我在 BallSearch 模型中设置了以下搜索功能:

public function search()
{
    $query = Ball::find();

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
        'sort' => [
            'attributes' => [
                'color',
                'created_at',
            ],
            'defaultOrder'=> ['created_at' => SORT_DESC]
        ],
    ]);

    return $dataProvider;
}
Run Code Online (Sandbox Code Playgroud)

这在一定程度上有效,但是当按颜色排序时,我可以理解地失去了最新的第一个排序。我真的很喜欢这个结果:

2, blue  , 2010-11-08
3, blue  , 2010-09-01
1, red   , 2010-10-09
4, red   , 2010-06-15 
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果我将最新的第一个条件放在查找查询上:

...
$query = Ball::find()->orderBy(['created_at' …
Run Code Online (Sandbox Code Playgroud)

gridview yii2

3
推荐指数
1
解决办法
4399
查看次数

如何基于clicked元素使用jquery.on('click')获取父选择器

我正在使用jQuery.on(),并具有以下代码:

$('.parent').on('click', '.link',function (event) {
    console.log($(this)); // Logs '.link'
});
Run Code Online (Sandbox Code Playgroud)

如何访问触发点击的“ .parent”元素?

$(this) 返回'.link'元素

jquery

2
推荐指数
1
解决办法
280
查看次数

PHPUnit 自动加载器错误:找不到“Yii”类

我正在尝试开始 PHPUnit 测试。

我正在使用 composer 加载 PHPUnit 4.5 、Yii 1.1.14 和我们构建的一些自定义 Yii 包。在这些自定义包中,我们使用 Yii 类自动加载一些设置一些别名的文件。

在运行我们的应用程序时,我们手动包含基础 Yii 文件,然后运行 ​​Composer 生成的自动加载。

问题是,当我们运行 PHPUnit 时,composer 自动加载首先运行。即使在使用 include 指定引导程序文件时:

bin/phpunit --bootstrap carcass/phpunit.bootstrap.php  
Run Code Online (Sandbox Code Playgroud)

导致以下异常:

Fatal error: Class 'Yii' not found 
Run Code Online (Sandbox Code Playgroud)

事实上,即使在--解析选项之前,自动加载似乎也已运行:

bin/phpunit --help 
Run Code Online (Sandbox Code Playgroud)

导致同样的错误。删除自动加载允许 PHPunit 运行。

有没有办法解决?

我尝试在我们的主 composer.json 中为 Yii 基础文件放置一个自动加载,但是子包的自动加载首先运行......同样的错误。

我还尝试在每个子包中为 Yii 基本文件放置一个自动加载..但是当作曲家使用require. 我也不是这个选项的忠实拥护者,因为它严格地定义了 Yii 定义来自于不需要知道的子包的地方。

phpunit yii composer-php yii1.x

2
推荐指数
1
解决办法
2909
查看次数

Yii2 在 init 上设置新的活动记录关系

我有一个一比一的关系,那里有额外的字段Thing的表ThingExtra

我正在尝试ThingExtra在创建 new 时初始化一个 new以使用Thing,然后在保存时将它们都Thing保存:

class Thing extends ActiveRecord
{
    public function init(){
        if($this->isNewRecord){
            $this->extra = new ThingExtra();
        }
    }

    public function getExtra(){
        return $this->hasOne(ThingExtra::className(),['thing_id' => 'id']);
    }

    public function afterSave($insert, $changedAttributes)
    {
        parent::afterSave($insert, $changedAttributes);
        $this->extra->thing_id = $this->id;
        $this->extra->save();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试创建一个Thing

$thing = new Thing;
Run Code Online (Sandbox Code Playgroud)

我收到以下异常:

Exception: Setting read-only property: Thing::extra
Run Code Online (Sandbox Code Playgroud)

反正有这个吗?还是我的设计完全有缺陷?

这种方法在 Yii1.1 中对我们非常有效

php activerecord yii2

1
推荐指数
1
解决办法
1013
查看次数

算术/赋值运算符和复合赋值运算符是在C++中独立定义的

即如果在类定义中我超载operator+operator=对此有什么影响operator+=?反之亦然.

或者这些运营商完全独立,除非另有定义?

c++ operator-overloading

0
推荐指数
1
解决办法
151
查看次数