/** * Get all empty transactions * * @param integer $limit * @return array */ public function getEmptyTransactions($limit) { $predicate = new Predicate(); $select = $this->select(); $select->from(['a' => 'payment_transaction_list'])->columns(['id', 'slug'])->join(['b' => 'payment_transaction_item'], 'a.id = b.transaction_id', [], 'left')->where([$predicate->isNull('b.transaction_id')])->group('a.id')->limit($limit); $statement = $this->prepareStatementForSqlObject($select); $resultSet = new ResultSet(); $resultSet->initialize($statement->execute()); return $resultSet->toArray(); }
public function testCanNestPredicates() { $predicate = new Predicate(); $predicate->isNull('foo.bar')->nest()->isNotNull('bar.baz')->and->equalTo('baz.bat', 'foo')->unnest(); $parts = $predicate->getExpressionData(); $this->assertEquals(7, count($parts)); $this->assertContains('%1$s IS NULL', $parts[0]); $this->assertContains(array('foo.bar'), $parts[0]); $this->assertEquals(' AND ', $parts[1]); $this->assertEquals('(', $parts[2]); $this->assertContains('%1$s IS NOT NULL', $parts[3]); $this->assertContains(array('bar.baz'), $parts[3]); $this->assertEquals(' AND ', $parts[4]); $this->assertContains('%s = %s', $parts[5]); $this->assertContains(array('baz.bat', 'foo'), $parts[5]); $this->assertEquals(')', $parts[6]); }
/** * Delete not active empty connections * * @return boolean|string */ public function deleteNotActiveEmptyConnections() { try { $this->adapter->getDriver()->getConnection()->beginTransaction(); $predicate = new Predicate(); $delete = $this->delete()->from('membership_level_connection')->where(['active' => self::MEMBERSHIP_LEVEL_CONNECTION_NOT_ACTIVE, $predicate->isNull('membership_id')]); $statement = $this->prepareStatementForSqlObject($delete); $statement->execute(); $this->adapter->getDriver()->getConnection()->commit(); } catch (Exception $e) { $this->adapter->getDriver()->getConnection()->rollback(); ApplicationErrorLogger::log($e); return $e->getMessage(); } return true; }