protected function _dataManyToMany($field, $collection) {
        /**
         * Instead of making only one query by line, we assemble all the lines IDs and we make a big query (time saving)
         * First, we make the query, using IN()
         * Then, we loop through the query lines and we add to each line her data from join
         */

        $in = '';
        $inVars = [];

        /** we built the relation table name : $table */
        $currentEntity = $field->foreign->entity();
        $currentField = $this->_entity->primary();
        $referenceEntity = $field->foreign->referenceEntity();
        $referenceField = $field->foreign->referenceField();
        $fieldFormName = lcfirst($this->_entity->name()) . '_' . lcfirst($currentField) . '_' . lcfirst($this->_entity->name()) . '.' . lcfirst($currentField);
        $fieldRelation = $this->_getTableEntity($referenceEntity)->name() . '_' . $referenceField;

        /** We must know the join table name */
        $current = strtolower($currentEntity . $currentField);
        $reference = strtolower($referenceEntity . $referenceField);
        $table = [$current, $reference];
        sort($table, SORT_STRING);
        $table = ucfirst($table[0] . $table[1]);

        /** @var $line \Gcs\Framework\Core\Orm\Entity\Entity */
        foreach ($collection as $key => $line) {
            $in .= ' :join' . $key . ',';
            $inVars['join' . $key] = $line->get($currentField);
        }

        $in = trim($in, ',');

        /** @var $datasJoin \Gcs\Framework\Core\Collection\Collection */
        $datasJoin = self::Entity()->$table()->find()->where($fieldFormName . ' IN(' . $in . ')')->orderBy($fieldFormName . ' ASC')->vars($inVars)->fetch();

        $data = null;

        /** @var $line \Gcs\Framework\Core\Orm\Entity\Entity */
        foreach ($collection as $line) {
            $count = $line->get($field->name);
            $data = new Collection();

            /** @var $dataJoin \Gcs\Framework\Core\Orm\Entity\Entity */
            foreach ($datasJoin as $key2 => $dataJoin) {
                /**
                 * The lines are ordered by reference Entity ID, so when we find the first line, we have just to
                 * get the following lines thanks to $count
                 */

                if ($count > 0) {
                    $data->add($dataJoin->get($fieldRelation));
                    $datasJoin->delete($key2);
                }
            }

            $line->set($field->name, $data);
        }

        return $collection;
    }