Db::setFalConstraint() 

\nn\t3::Db()->setFalConstraint($queryBuilder = NULL, $tableName = '', $falFieldName = '', $numFal = true, $operator = false); 

Add constraint for sys_file_reference to a QueryBuilder. Restricts the results to whether there is a FAL relation.

$queryBuilder = \nn\t3::Db()->getQueryBuilder( $table );

// Only fetch datasets that have at least one SysFileReference for falfield
\nn\t3::Db()->setFalConstraint( $queryBuilder, 'tx_myext_tablename', 'falfield' );

// ... that do NOT have a SysFileReference for falfield
\nn\t3::Db()->setFalConstraint( $queryBuilder, 'tx_myext_tablename', 'falfield', false );

// ... which have EXACTLY 2 SysFileReferences
\nn\t3::Db()->setFalConstraint( $queryBuilder, 'tx_myext_tablename', 'falfield', 2 );

// ... that have 2 or less (less than or equal) SysFileReferences
\nn\t3::Db()->setFalConstraint( $queryBuilder, 'tx_myext_tablename', 'falfield', 2, 'lte' );
Copied!
@param \TYPO3\CMS\Core\Database\Query\QueryBuilder $queryBuilder
@param string $tableName
@param string $falFieldName
@param boolean $numFal
@param boolean $operator
@return \TYPO3\CMS\Core\Database\Query\QueryBuilder

Source Code 

public function setFalConstraint( &$queryBuilder = null, $tableName = '', $falFieldName = '', $numFal = true, $operator = false )
{
	if ($operator === false) {
		if ($numFal === 0 || $numFal === 1) {
			$operator = 'eq';
		}
		if ($numFal === true) 	{
			$numFal = 1;
			$operator = 'gte';
		}
		if ($numFal === false) 	{
			$numFal = 0;
		}
	}
	if ($operator === false) {
		$operator = 'eq';
	}
	$groupName = 'cnt_' . preg_replace('[^a-zA-Z0-1]', '', $falFieldName);
	$subQuery = $this->getQueryBuilder( 'sys_file_reference' )
		->selectLiteral('COUNT(s.uid)')
		->from('sys_file_reference', 's')
		->andWhere($queryBuilder->expr()->eq('s.fieldname', $queryBuilder->createNamedParameter($falFieldName)))
		->andWhere($queryBuilder->expr()->eq('s.uid_foreign', $queryBuilder->quoteIdentifier($tableName.'.uid')))
		->getSql();
	$queryBuilder
		->addSelectLiteral("({$subQuery}) AS {$groupName}")
		->having( $queryBuilder->expr()->{$operator}($groupName, $numFal) );
	return $queryBuilder;
}
Copied!