2014-11-22 58 views
0

我一直在看phalcon作为我正在运行的laravel项目的替代方案。它主要是一个REST API。我试图弄清楚如何在模型的json响应中包含关系。Phalcon包括json中的关系

举例来说,如果我有2种型号,设置如下图所示:

class Clients extends \Phalcon\Mvc\Model 
{ 

    public function initialize() { 
    $this->hasMany('clientid','Contacts','clientid') 
    } 

} 

class Contacts extends \Phalcon\Mvc\Model { 

    public function initialize() { 
    $this->belongsTo('clientid','Clients','clientid') 
    } 
} 

而且我做了:

$clients = Client::find(); 
return json_encode($clients->toArray()); 

我怎么会让它自动包括联系人?

我需要输出是这样的:

[{ 
    clientid:'1111', 
    contacts:[ 
     { 
     contactid:111 
     } 
    ] 
}]; 

非常感谢!

回答

0

docs

通过使用相同的名称访问属性的关系,将检索所有的相关结果。

基于上述,你应该能够通过像这样定义的关系来访问联系人:

$clients = Client::find(); 
$clientContacts = $clients->contacts; 
// do something with the contacts 

编辑:

通过你的$联系人尝试循环再拿到相关记录:

foreach ($clients as $client) { 
    // Do something with the contacts... 
    $contacts[$client->id] = $client->contacts; 
} 
+0

这可能适用于单个记录,但它似乎并不适用于resultset ...给它一个burl – 2014-11-23 01:17:06

+0

是的,你是对的。如果你遍历你的$ clients然后使用$ client-> contacts,那么怎么样?看我的编辑。 – Hassan 2014-11-23 13:55:14