[英]Using Related Models in Phalcon with Namespaces
我一直在与Phalcon合作,并逐渐掌握它。 但是,我偶然发现了一个问题,这让我很困惑。 我希望其他人可以提供一些帮助。
我在数据库中有两个表,它们是一对多的。 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
对于我在这里做错的事情我感到茫然,任何帮助将不胜感激。
如果您有任何疑问或需要澄清,请问。
感谢您的帮助。
经过大量审查并从Phalcon论坛获得了一些帮助。 它发觉到代码没有错。
问题归结为“用户错误”,因为我在两个单独的模块中拥有CrmClients.php文件的两个副本。 我在错误的文件夹中编辑了CrmClients,因此带有CrmSites.php的CrmClients.php文件根本没有初始化函数-可能是为什么找不到关系...
这样,我添加了initialize函数,它运行良好。
@digitronic:非常感谢您对此提供的帮助。
再次感谢。
您在CrmClients模型的hasMany()方法中忘记了第三个参数。
您的代码如下所示:
$this->hasMany("id", "CRM\Models\CrmSites", array("alias" => "Sites"));
它应该像这样:
$this->hasMany("id", "CRM\Models\CrmSites", 'client_id', array("alias" => "Sites"));
在我看来,这可能与您得到的错误有关...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.