我知道解决方案很简单,可能与Containable行为有关,但我无法使其正常工作。没有所有的尝试
情况就是这样。我想显示活动的活动详情(例如会议)。每个事件都发生在EventVenue中,每个EventVenue都位于Country。
中因此,在国家模型中,存在以下内容:
public $hasMany = array(
'EventVenue' => array(
'className' => 'EventVenue',
'foreignKey' => 'country_id'
))
在EventVenue模型中,建立了BelongsTo关联
public $belongsTo = array(
'Country' => array(
'className' => 'Country',
'foreignKey' => 'country_id'
))
在Event模型中,创建了一个hasOne关联
public $hasOne = array(
'EventVenue' => array(
'className' => 'EventVenue',
'foreignKey' => 'event_id',
))
我想要的是在EventsController中呈现的页面上显示国家/地区名称。我确实获得了所有Event和EventVenue数据,但未检索到该场地的相关国家/地区。
以下列方式检索数据
$item = $this->Event->findBySlug($slug);
如何获取从数据库中检索到的国家/地区名称(例如荷兰)?我尝试过类似的东西但是没有用:
$item = $this->Event->findBySlug($slug,array(
'contain' => array(
'Event' => array(
'EventVenue' => array(
'Country'
)
)
)
)
答案 0 :(得分:0)
试试这个:
$item = $this->Event->findBySlug($slug,array(
'contain' => array(
'EventVenue' => array(
'Country'
)
)
);
<强>更新强>
原来findBy不支持Containable。您可以使用它来获得所需的结果:
$item = $this->Event->find('first',array(
'conditions' => array(
'Event.slug' => $slug
),
'contain' => array(
'EventVenue' => array(
'Country'
)
)
);
哦,确保你在模型中有这个:public $actsAs = array('Containable');
答案 1 :(得分:0)
尝试这种方法:
$this->Event->recusive = 2;
$item = $this->Event->findBySlug($slug);
答案 2 :(得分:0)
在进行查找之前,需要将递归设置为2,类似这样
$this->Event->recursive = 2;
有了这个,你将一次性获得Event,EventVenue和Country
希望有所帮助