我正在尝试使用select对象来过滤多对多行集的结果。这个电话很有用:
$articles = $this->model->findArticlesViaArticlesUsers();
然而,这不是:
$articles = new Default_Model_Articles();
$articleSelect = $articles->select();
$articleSelect->where("status = 'published'")
->order("date_published DESC")
->limit(1);
$articles = $this->model->findArticlesViaArticlesUsers($articleSelect);
抛出以下错误:
异常'Zend_Db_Select_Exception' 消息'您无法定义 相关名称“我不止一次”
我无法弄清楚如何使用神奇的多对多关系(也不是findManyToManyRowset
)成功获得“具有'已发布'状态的文章”。我已经走到了尽头,想着手动编写sql。有什么想法吗?
答案 0 :(得分:1)
定义select语句时,必须使用调用findManyToManyRowset(或您使用的任何魔术函数)的相同对象。
例如:
$articles = new Default_Model_Articles();
$user = $articles->find($userId)->current();
$select = $user->select();
$select->where('status = ?', 'published');
$articles = $user->findArticlesViaArticlesUsers($select);
注意select语句和findArticlesViaArticlesUsers都在扩展$ user。这是关键。
答案 1 :(得分:0)
我认为你误解了这种关系是如何运作的。
请参阅this manual page - 您应该在Row对象上调用magic方法findArticlesViaArticlesUsers。在这种情况下,我认为你想找到一个用户,然后在那上面调用findArticles ....