FOF30\Model\DataModel\Relation\HasMany::getCountSubquery PHP Méthode

getCountSubquery() public méthode

Returns the count subquery for DataModel's has() and whereHas() methods.
public getCountSubquery ( string $tableAlias = null ) : JDatabaseQuery
$tableAlias string The alias of the local table in the query. Leave blank to use the table's name.
Résultat JDatabaseQuery
    public function getCountSubquery($tableAlias = null)
    {
        // Get a model instance
        $foreignModel = $this->getForeignModel();
        $foreignModel->setIgnoreRequest(true);
        $db = $foreignModel->getDbo();
        if (empty($tableAlias)) {
            $tableAlias = $this->parentModel->getTableName();
        }
        $query = $db->getQuery(true)->select('COUNT(*)')->from($db->qn($foreignModel->getTableName(), 'reltbl'))->where($db->qn('reltbl') . '.' . $db->qn($foreignModel->getFieldAlias($this->foreignKey)) . ' = ' . $db->qn($tableAlias) . '.' . $db->qn($this->parentModel->getFieldAlias($this->localKey)));
        return $query;
    }

Usage Example

Exemple #1
0
    /**
     * @group           HasMany
     * @group           HasManyGetCountSubquery
     * @covers          FOF30\Model\DataModel\Relation\HasMany::getCountSubquery
     */
    public function testGetCountSubquery()
    {
        //\PHPUnit_Framework_Error_Warning::$enabled = false;
        $model = $this->buildModel();
        $relation = new HasMany($model, 'Children');
        $query = $relation->getCountSubquery();
        $check = '
SELECT COUNT(*)
FROM `#__fakeapp_children` AS `reltbl`
WHERE `reltbl`.`fakeapp_parent_id` = `#__fakeapp_parents`.`fakeapp_parent_id`';
        $this->assertEquals($check, $query, 'HasMany::getCountSubquery Returned the wrong query');
    }