Php 在具有名称空间的Phalcon中使用相关模型

Php 在具有名称空间的Phalcon中使用相关模型,php,namespaces,models,phalcon,table-relationships,Php,Namespaces,Models,Phalcon,Table Relationships,我一直在和法尔康一起工作,慢慢地开始处理它。然而,我偶然发现了一个问题,这让我感到困惑。我希望其他人能提供一些帮助 我在数据库中有两个表,它们作为一对多关联。客户端->站点。以下是Phalcon中模型的两个定义: #File: CrmClients.php namespace CRM\Models; use Phalcon\Mvc\Model\Resultset\Simple as Resultset; class CrmClients extends \Phalcon\Mvc\Model {

我一直在和法尔康一起工作,慢慢地开始处理它。然而,我偶然发现了一个问题,这让我感到困惑。我希望其他人能提供一些帮助

我在数据库中有两个表,它们作为一对多关联。客户端->站点。以下是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\clientscocontroller.php中未定义的属性CRM\Models\CrmClients::Sites

我不知道我在这里做错了什么,任何帮助都将不胜感激

如果您有任何问题,或需要任何澄清,请直接提问


提前感谢您的帮助。

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

您的代码如下所示:

$this->hasMany("id", "CRM\Models\CrmSites", array("alias" => "Sites"));
应该是这样的:

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

在我看来,这可能与您在经过大量审查和Phalcon论坛的帮助后得到的错误有关。

。据了解,代码没有问题

问题归结为一个“用户错误”,因为我在两个单独的模块中有两个CrmClients.php文件的副本。我在错误的文件夹中编辑了CrmClients,因此带有CrmSites.php的CrmClients.php文件根本没有初始化函数-可能是它找不到关系的原因

因此,我添加了initialize函数,它工作得非常好

@digitronic:非常感谢您在这方面的帮助


再次感谢。

感谢您的回复。我的道歉;在将其从源文件转录到已删除参数的站点时。这在我的代码中,但仍然不起作用。我已经更新了我的原始帖子以适应。您是否可以尝试使用$profile->getRelated('Sites')而不是$profile->Sites,这可能会给您带来更多描述性错误这将消息更改为以下内容:
使用别名“Sites”的模型“CRM\Models\CrmClients”没有定义关系
我无法确定“initialize()”是否正确方法正在被调用。有没有我可以检查的地方?奇怪。。。我和你一样使用名称空间和定义关系,从来没有遇到过问题。唯一的区别是我使用小写的别名。仔细检查参数的顺序是否正确(id/客户端id),除此之外,我一无所知