簡體   English   中英

Yii2關系排序和搜索的關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM