ZF2:如何检查表是否已在Select中联接

时间:2018-09-27 15:05:33

标签: php zend-framework2 zend-db

我对ZF2中的Select对象有问题。

Class One {

  function search(){
    $select = new Select();
    $this->conditions($select);

    $select->join(['t'=>'table'],'t.id = other_table.table_id',[]);
  }

  function conditions(select $select){
    $select->join(['t'=>'table'],'t.id = other_table.table_id',[]);
  }
}

第一次连接很好(在condition()方法中)。当我想第二次加入表格时,如何检查表格是否已经加入?

我找不到答案...

1 个答案:

答案 0 :(得分:1)

如果您查看ZF2中的 Zend \ Db \ Sql \ Select 类,您会发现没有方法可以为您提供这些信息。

我建议为您的类中的联接操作创建一个单独的方法,并在您的类中具有一个标志(布尔值),以指示是否已调用联接方法:

private $isJoinCalled = false;

private function join($select){
    $select->join(['t'=>'table'],'t.id = other_table.table_id',[]);
    $this->isJoinCalled = true;
} 

这样,您可以在检查是否调用了join之后调用此方法:

if(!$this->isJoinCalled){
    $this->join($select);
}