代码之家  ›  专栏  ›  技术社区  ›  typeoneerror

使用zend_db_table_select查找dmanytomanyrowset

  •  1
  • typeoneerror  · 技术社区  · 16 年前

    我试图使用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” 使用消息“您不能定义 相关名称“i”多次

    我不知道如何成功地获得“已发布”状态的文章,使用魔法多对多关系(nor findManyToManyRowset )我已经到了极限,我想手动编写SQL。有什么想法吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Chris O'Connell    14 年前

    定义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。这是关键。

        2
  •  0
  •   David Snabel-Caunt    16 年前

    我想你误解了人际关系的运作方式。

    this manual page -您应该在row对象上调用magic方法findarticlesViaArticlesUsers。在这种情况下,我想你想找到一个用户,然后调用findarticles…就这点而言。