0
我想要獲取所有訪問者的列表,只包含最新的訪問信息和關聯的API調用的VisitType描述,我需要能夠在一個找。以前我們在下面有第二個代碼塊,但是當訪問者有多個關聯的訪問記錄(每個訪問記錄一個)時,這會返回訪客的多個記錄。我只需要得到最近的(MAX(Visit.visit_date)
,但是如果我們打算加入VisitType
,顯然不能使用它),因爲它與VisitType.type_description
相關聯。嘗試替換CakePHP模型綁定使用Containable不起作用
因爲我們試圖獲取訪客列表,所以beforeFind()函數在Visitor模型上。
我得到後續的問題,當我試圖使用下面的中容納代碼:
Warning (512): Model "Site" is not associated with model "Site" [CORE/Cake/Model/Behavior/ContainableBehavior.php, line 343]
Warning (512): Model "SubjectStatus" is not associated with model "SubjectStatus" [CORE/Cake/Model/Behavior/ContainableBehavior.php, line 343]
我有這些協會建立:
- 遊客的hasMany人次,訪問hasOne遊客
- 瀏覽人次擁有一個網站,一個網站有許多訪問者
- VisitorStatus有很多訪客,參訪者屬於VisitorStatus
- 訪問hasOne VisitKind,VisitKind的hasMany訪問
失敗中可容納代碼:
public function beforeFind($options, $primary=false) {
if ($this->__AjaxDataLoad) {
// Replacing a bunch of Model rebinds with Containable
$this->Behaviors->load('Containable');
$this->contain(array(
'Site' => array(
'conditions' => array('Site.id = Visit.site_id'),
'field' => array('Site.site_name')
),
‘VisitorStatus' => array(
'conditions' => array(‘VisitorStatus.id = Visitor.visit_status_id'),
'field' => array(‘VisitorStatus.status')
),
'Visit' => array(
'conditions' => array('Visit.subject_id = Visitor.id'),
'order' => 'Visit.visit_date DESC',
'limit' => 1,
'VisitType' => array(
'conditions' => array('Visit.visit_type_id = VisitType.id'),
'fields' => array('VisitType.type_description'),
)
)
));
}
}
此前,後續碼「作品」與包括每個訪客多行,一行的不良副作用每次訪問:
public function beforeFind($options, $primary=false) {
if ($this->__AjaxDataLoad) {
$this->unbindModelAll();
$this->bindModel(array(
'belongsTo' => array(
'Site' => array(
'className' => 'Site',
'foreignKey' => 'site_id',
),
‘VisitorStatus' => array(
'className' => ‘VisitorStatus',
'foreignKey' => ‘visitor_status_id',
)
),
'hasOne' => array(
'Visit' => array(
'className' => 'Visit',
'foreignKey' => ‘visitor_id',
'order' => 'Visit.visit_date DESC’,
‘limit’ => 1 // <—————————————— THIS DOES NOTHING
),
'VisitType => array(
'foreignKey' => false,
'conditions' => array("Visit.visit_type_id = VisitType.id"),
'fields' => array('VisitType.type_description’)
)
)
));
}
}
我嘗試的Containable結構有什麼問題嗎?
我必須配置調試= 2,CakePHP的2.2.5版本