を使用して行レベルのセキュリティを実現するにはどうすればよいZend_Db_Select
ですか? いくつかのオプションを考えることができますが、それらは実際にはパターンに完全に適合していないようです.
、、、および多くusers
のcontent
異なる ACL レベルがあるとします。これが私が考えた1つの解決策です:
$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');
しかし、ライブラリを拡張または変更して、すでに存在する可能性のあるものを取得することに少し近づきすぎているようですが、よくわかりません。
他の誰かがこの種のニーズを持っていましたか?どのように解決しましたか?