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