我如何使用 实现行级安全性Zend_Db_Select
?我能想到几个选项,但它们似乎不太适合这种模式。
假设我有users
, content
, 和许多不同的 ACL 级别。这是我想到的一个解决方案:
$select = $db->select()
->from('content')
->where('content_type NOT IN (?)',
Model_Content::userAllowedContentTypes()
)
->order('date DESC')
);
但问题是,如果您决定为不同类型的安全性添加另一个字段怎么办?所以,我想可能是这样的:
/**
* @var Zend_Db_Select
*/
$where = Model_Content::getWhere();
$db->select()
->from('content')
->$where()
->order('date DESC');
更好..但这也不太对劲。我想要的是更像这样的东西:
$db->select()
->from(array('c' => 'content'))
->getPlugin(new Model_Content_Security('c'))
->order('date DESC');
但这似乎有点太接近扩展或修改库以获得可能已经存在的东西,但我还没有完全看到它。
有没有其他人有这种需求,你是怎么解决的?