extend/specify Yii2的关系如何?

how to extend/specify Yii2's relations?

我想知道性能并考虑如何缩小我的 SQL 查询范围。因此我有以下问题:

假设我们有以下关系:

public function getOrders() {
    return $this->hasMany(Orders::className(), ['fk_product_id' => 'id']);
}

public function getOrdersByDate() {
    return $this->hasMany(Orders::className(), ['fk_product_id' => 'id'])->orderBy('date');
}

那么问题来了,有没有办法在我调用$model->ordersByDate的时候不用额外的SQL查询来连接这两个关系呢?我知道我可以通过 foreach() 处理第一个关系并对它进行排序以获得第二个关系的结果,但这似乎不太明智。

您可以使用->with()一次获取所有信息

Model::find()->with('orders')->with('ordersByDate')->all()

然后用$model->orders

引用它们

或者稍后在数组中使用 getOrders 和 sort/find 获取一次订单。

除非您可以更具体地说明您的查询类型 运行,并且您想要一个可以适应多个不同问题的解决方案,否则您只需要阅读 :)

http://www.yiiframework.com/doc-2.0/yii-helpers-basearrayhelper.html

检查 BaseArrayHelper::index()

http://www.w3schools.com/php/php_arrays_sort.asp

http://php.net/manual/en/function.array-search.php

http://php.net/manual/en/function.ksort.php

$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");

ksort($fruits);

foreach ($fruits as $key => $val) {

echo "$key = $val\n";

}