# Is it possible to set multiple values to Laminas SQL from function?

**URL:** <https://discourse.laminas.dev/t/is-it-possible-to-set-multiple-values-to-laminas-sql-from-function/3776>\
**Category:** Components & MVC\
**Tags:** laminas-db\
**Created:** [September 25, 2024, 12:32pm UTC](https://discourse.laminas.dev/t/is-it-possible-to-set-multiple-values-to-laminas-sql-from-function/3776 "2024-09-25T12:32:20Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![eguvenc](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/eguvenc/32/265_2.png) [@eguvenc](https://discourse.laminas.dev/u/eguvenc)\
**Post date:** [September 25, 2024, 12:32pm UTC](https://discourse.laminas.dev/t/is-it-possible-to-set-multiple-values-to-laminas-sql-from-function/3776/1 "2024-09-25T12:32:21Z")

</div>

I am trying to convert this sql code into Laminas way ?  
Is it possible to set multiple values ​​to Laminas SQL from function ?

```auto
SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM categories AS node,
        categoies AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.name
ORDER BY node.lft;

```

It Should be like this but it doesn’t work…

```auto
        $sql = new Sql($this->adapter);
        $select = $sql->select();
        $select->columns([
            'categoryId',
            'name',
            'depth' => new Expression("(COUNT(parent.name) - 1)"),
        ]);
        $select->from(new TableIdentifier('categories AS node, categories AS parent'));
        
        $nest = $select->where->nest();
            $nest->and->between('node.lft', 'parent.lft', 'parent.rgt');
        $nest->unnest();

        $select->group(['node.name']);
        $select->order(['node.lft']);

```

Sql output above the code

```auto
SELECT
	`categories AS node, categories AS parent`.`categoryId`,
	`categories AS node, categories AS parent`.`name`,
	( COUNT( parent.NAME ) - 1 ) AS `depth` 
FROM
	`categories AS node, categories AS parent` 
WHERE
	( `node`.`lft` BETWEEN 'parent.lft' AND 'parent.rgt' ) 
GROUP BY
	`node`.`name` 
ORDER BY
	`node`.`lft` ASC

```

---

<div class="post-metadata">

**Author:** ![froschdesign](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/froschdesign/32/38_2.png) [@froschdesign](https://discourse.laminas.dev/u/froschdesign)\
**Post date:** [September 25, 2024, 9:20pm UTC](https://discourse.laminas.dev/t/is-it-possible-to-set-multiple-values-to-laminas-sql-from-function/3776/2 "2024-09-25T21:20:05Z")

</div>

I don’t use laminas-db because it is no longer being developed and relationships are not supported.

But `TableIdentifier` does not support multiple entries, so you would also have to use `Expressions`: _(not tested!)_

```php
$select->columns(
    [
        'categoryId' => new Laminas\Db\Sql\Expression('node.categoryId'),
        'name' => new Laminas\Db\Sql\Expression('node.name'),
        'depth' => new Laminas\Db\Sql\Expression("(COUNT(parent.name) - 1)"),
    ]
);

```

Btw. in your original SQL query there is no `categoryId`.
