簡體   English   中英

yii關系槽一表

[英]yii relations trough one table

在Yii 1.1.14中是否可以使用一個“ object_rel”表連接這些表?

object_rel:

  • ID
  • owner_id(例如,位置記錄ID)
  • owner_type(例如2 =位置)
  • slave_id(例如程序記錄ID)
  • slave_type(例如1 =程式)

位置(類型= 2):

  • ID
  • ...

程序(類型= 1):

  • ID
  • ...

類別(類型= 3):

  • ID
  • ...

還是我必須寫一些自定義的奇特的東西?

我沒有運氣就嘗試過MANY_TO_MANY ...

不幸的是,我認為這對於關系而言是不可能的,因為它們要求您指定模型類。 但是,您可以在模型中為object_rel定義以下內容:

private static $modelTypes = array(
    1 => Program::model(),
    2 => Location::model(),
    3 => Category::model(),
);


public static function getOwner($object)
{
    $data = self::$db->createCommand()
               ->select('owner_id, owner_type')
               ->from('object_rel')
               ->where('owner_id = :object_id', array(':object_id' => $object->id))
    ->queryRow(true); // assuming every object only has one owner

    // no results found
    if ($data === false) {
        return false;
    }

    $model = self::$modelTypes[data['owner_type']];
    return $model->findByPk(data['owner_id']);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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