2014-01-21 38 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']); 
}