在Phalcon中使用命名空间中的相关模型

时间:2014-08-05 14:22:49

标签: php namespaces models phalcon table-relationships

我一直在与Phalcon合作并慢慢掌握它。但是,我偶然发现了一些问题而且让我感到难过。我希望其他人可以提供一些帮助。

我在DB中有两个表作为一对多关联。 clients->位点。这些是Phalcon模型的两个定义:

#File: CrmClients.php
namespace CRM\Models;
use Phalcon\Mvc\Model\Resultset\Simple as Resultset;

class CrmClients extends \Phalcon\Mvc\Model
{
    public id;

    public function initialize()
    {
        $this->hasMany("id", "CRM\Models\CrmSites", "client_id", array("alias" => "Sites"));
    }
}

#File: CrmSites.php
namespace CRM\Models;

class CrmSites extends \Phalcon\Mvc\Model
{
    public id;
    public client_id;

    public function initialize()
    {
        $this->belongsTo("client_id", "CRM\Models\CrmClients", "id", array("foreignKey" => true, "alias" => "Clients"));
    }
}

然后在控制器中我有:

$profile = Clients::findFirstById($id);
$sites = $profile->Sites;

当我运行时,我最终得到以下错误:

  

注意:访问第51行的\ html \ apps \ crm \ controllers \ ClientsController.php中的未定义属性CRM \ Models \ CrmClients :: Sites

我不知道我在这里做错了什么,我们将非常感谢任何帮助。

如果您有任何疑问或需要澄清,请直接询问。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

经过多次审查和Phalcon论坛的一些帮助。结果发现代码没有错。

问题归结为&#34;用户错误&#34;因为我在两个单独的模块中有两个CrmClients.php文件的副本。我在错误的文件夹中编辑CrmClients,因此CrmSites.php的CrmClients.php文件根本没有初始化功能 - 可能是为什么它没有找到关系... < / p>

因此,我添加了初始化功能,并且它完美运行。

@digitronic:非常感谢这个帮助。

再次感谢。

答案 1 :(得分:0)

您在CrmClients模型中的hasMany()方法中忘记了第三个参数。

您的代码如下:

$this->hasMany("id", "CRM\Models\CrmSites", array("alias" => "Sites"));

它应该是:

$this->hasMany("id", "CRM\Models\CrmSites", 'client_id', array("alias" => "Sites"));
在我看来,这可能与你得到的错误有关......