ZF2:如何检查 table 是否已经加入 Select

ZF2: How to check if table is already joined in Select

我对 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() 方法中)。第二次加入时如何查看table是否已经加入?

我找不到答案...

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

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

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);
}