假设我有许多在不同时间创建的彩色球,我希望在 GridView 中显示它们。
填充为:
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) 我正在使用jQuery.on(),并具有以下代码:
$('.parent').on('click', '.link',function (event) {
console.log($(this)); // Logs '.link'
});
Run Code Online (Sandbox Code Playgroud)
如何访问触发点击的“ .parent”元素?
$(this) 返回'.link'元素
我正在尝试开始 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 定义来自于不需要知道的子包的地方。
我有一个一比一的关系,那里有额外的字段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 中对我们非常有效
即如果在类定义中我超载operator+或operator=对此有什么影响operator+=?反之亦然.
或者这些运营商完全独立,除非另有定义?
yii2 ×2
activerecord ×1
c++ ×1
composer-php ×1
gridview ×1
jquery ×1
php ×1
phpunit ×1
yii ×1
yii1.x ×1