我一直在与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
我不知道我在这里做错了什么,我们将非常感谢任何帮助。
如果您有任何疑问或需要澄清,请直接询问。
提前感谢您的帮助。
答案 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"));
在我看来,这可能与你得到的错误有关......