So first I've established 3 models and 3 tables with hasMany relationship in 2 of them: User and Group. UserGroup is belongTo User and Group.

    class User extends \Phalcon\Mvc\Model {

    public $id;
    public $name;

    public function initialize()
    {
        $this->hasMany(
            'id',
            'UserGroup',
            'user_id',
            array(
            'foreignKey' => array(
                'action' => Relation::ACTION_CASCADE
            )
        ));
    }

Group:

    use Phalcon\Mvc\Model\Validator\PresenceOf;

    class Group extends \Phalcon\Mvc\Model {

    public $id;
    public $name;

    public function initialize()
    {
        $this->hasMany('id', 'UserGroup', 'group_id', array(
            "foreignKey" => array(
                "message" => "Группа не может быть удалена, потому что её используют некоторые пользователи"
            )
        ));
    }

UserGroup:

class UserGroup extends \Phalcon\Mvc\Model {

    public $id;
    public $group_id;
    public $user_id;

    public function initialize()
    {
        $this->belongsTo("user_id", "User", "id", array(
            "foreignKey" => true
        ));

        $this->belongsTo("group_id", "Group", "id", array(
            "foreignKey" => array(
                "message" => "Выбранная группа для пользователя не существует!"
            )
        ));
    }
}

Then, when I create a new user It all works:

    public function createAction()
    {
        $this->checkPost();

        // Get user name
        $userName = $this->request->getPost('name');
        $userGroups = $this->request->getPost('groups');

        if ($this->checkExisting($userName)) {
            $this->returnJson('error', 'Такой пользователь уже существует!');
            return;
        }

        // Create user
        $user = new User();

        $user->name = $userName;
        $success = $user->create();

        if ($success) {

            // Add user groups
            $userGroupModels = array();
            $userGroupCount = 0;
            if (!empty($userGroups)) {
                foreach($userGroups as $groupId) {
                    $userGroupModels[ $userGroupCount ] = new UserGroup();
                    $userGroupModels[ $userGroupCount ]->user_id = $user->id;
                    $userGroupModels[ $userGroupCount ]->group_id = $groupId;

                    $userGroupCount++;
                }

                $user->userGroup = $userGroupModels;
                $user->save();
            }

            $this->returnJson('success', 'Пользователь добавлен!');
            return;
        } else {
            $this->returnJson('error', 'Ошибка добавления пользователя!');
            return;
        }
    }

But when I change relationship of User to n-n:

    $this->hasManyToMany(
            'id',
            'UserGroup',
            'user_id', 'group_id',
            'Group',
            'id',
            array(
            'foreignKey' => array(
                'action' => Relation::ACTION_CASCADE
            )
        ));

It stopped working. No errors. User is added, relations - not.

1.3.0

Help!