2014-01-21 31 views
0

是否有可能在Yii 1.1.14中使用一個「object_rel」表連接這些表?yii關係通過一張表

object_rel:

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

location(type = 2):

  • ID
  • ...

程序(類型= 1):

  • ID
  • ...

類別(類型= 3 ):

  • ID
  • ...

或我必須寫一些自定義花哨的東西?

我已經試過MANY_TO_MANY沒有運氣...

回答

0

不幸的是,我不認爲這是可能的關係,因爲它們需要你指定模型級。但是,您可以在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']); 
}