[英]Yii2 Relation of relation sort and search
我在Yii2中進行關系搜索和排序時遇到問題。
我能夠使用單個級別的關系進行排序和搜索。
說我有這個結構:
屬性-> HAS_MANY->密鑰集-> HAS_MANY->密鑰
相反:
鍵-> HAS_ONE->鍵集-> HAS_ONE->屬性
在鍵gridview中,我想按屬性進行排序和搜索
我可以按Key_Sets進行搜索和排序,但不能進行二級關聯
我希望這是有道理的
問候
利亞姆
更新資料
在鑰匙我有
public function getKeySet()
{
return $this->hasOne(KeySets::className(), ['id' => 'key_set_id']);
}
接着
public function getProperty()
{
return $this->hasOne(Properties::className(), 'id', 'key_set_id')->via('keySet');
}
這返回
為foreach()提供了無效的參數
if (strpos($parentAlias, '{{') === false) {
$parentAlias = '{{' . $parentAlias . '}}';
}
if (strpos($childAlias, '{{') === false) {
$childAlias = '{{' . $childAlias . '}}';
}
$on = [];
foreach ($child->link as $childColumn => $parentColumn) {
$on[] = "$parentAlias.[[$parentColumn]] = $childAlias.[[$childColumn]]";
}
$on = implode(' AND ', $on);
if (!empty($child->on)) {
$on = ['and', $on, $child->on];
}
} else {
$on = $child->on;
}
在Yupik的驚人幫助下,我有了解決方案
public function getProperty()
{
return $this->hasOne(Properties::className(), ['id' => 'property_id'])->via('keySet');
}
via()
或viaTable()
指定與聯結表關聯的關系。
class Order extends ActiveRecord
{
public function getOrderItems() {
return $this->hasMany(OrderItem::className(), ['order_id' => 'id']);
}
public function getItems() {
return $this->hasMany(Item::className(), ['id' => 'item_id'])
->via('orderItems'); // here's the magic
}
}
文件連結: Yii2 ActiveRelationTrait
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.