Yii 1.1.14 中是否可以使用一个“object_rel”表连接这些表?
对象关系:
- ID
- owner_id(例如位置记录 id)
- owner_type(例如 2 = 位置)
- slave_id(例如节目记录id)
- slave_type(例如 1 = 程序)
位置(类型 = 2):
- ID
- ...
程序(类型 = 1):
- ID
- ...
类别(类型 = 3):
- ID
- ...
或者我必须写一些定制的花哨的东西?
我已经尝试了 MANY_TO_MANY 没有运气......
Yii 1.1.14 中是否可以使用一个“object_rel”表连接这些表?
对象关系:
位置(类型 = 2):
程序(类型 = 1):
类别(类型 = 3):
或者我必须写一些定制的花哨的东西?
我已经尝试了 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']);
}