Hi there,

When I try to declare a Model twice, the second declaration returns empty shared dependenicies. I'm probably missing something. Here what I have.

  • Library - LibraryBase.php
  • Library - User.php
  • Model - ModelBase.php
  • Model - UserGroupsModel.php
  • Controller - UsersController.php

ModelBase.php

namespace Models;

class ModelBase extends \Phalcon\Mvc\Model{

   public $db; // Setting up db connection

   // Initialize model
   function initialize()
   {
      $this->db=$this->getDI()->getShared("db"); // Setting up db connection from injector
   }

}

UserGroupsModel.php

namespace Models;

class UserGroupsModel extends ModelBase{

   function initialize()
   {
      parent::initialize();   
   }

   function test()
   {
      $this->db->query('SOME QUERY');
   }

}

LibraryBase.php

namespace Libraries;

class LibraryBase extends \Models\ModelBase {

    function initialize()
     {
        parent::initialize();
     }

}

User.php

namespace Libraries;

class User extends LibraryBase {
    function initialize()
     {
        parent::initialize();
     }

     function get_group()
     {
        $UserGroupsModel=new \Models\UserGroupsModel();
        $UserGroupsModel->test();
     }
}

UsersController.php

namespace Controllers;

class UsersController extends \Phalcon\Mvc\Controller{

    function userGoupsAction()
    {
        $UserGroupsModel=new \Models\UserGroupsModel();
        $UserGroupsModel->test();

        *********************************
        Error here. Says that query() is on non-object in the UserGroupsModel.
    }
}

The idea is to extend ModelBase and to have access to common dependencies. Users.php (library) is processing user authentication etc. UsersController.php dealing with users. LibraryBase extends ModelBase to access common objects. First call for UserGroupsModel() is done from User.php library and it works. The second call for UserGroupsModel() is done from UserController.php and it returns empty $this->db in the model.

If not to extend ModelBase and manually assing objects using $this->db=$this->getDI()->getShared("db"); in the UserGroupsModel() then it works. But then you need to assing common objects in every Model. I'm probably missing something.

Any help, suggestions or solutions are highly appreciated.

Thank you in advance.

EDIT:

Here is the link to stackoverflow where I have a sample that triggers an error:https://stackoverflow.com/questions/23303450/phalcon-mvc-model-called-twice-returns-empty-shared-objects