我已经为此搜索了一下,但部分问题是我不确定如何简明扼要地描述我的问题。我在这里有两个相关的模型:应用和缺席。应用程序属于缺席,缺席有很多应用程序。这是应用程序的架构:
CREATE TABLE applications (
id int unsigned AUTO_INCREMENT PRIMARY KEY,
user_id int unsigned,
absence_id int unsigned
);
这很简单。我想用特定用户的应用程序对所有缺勤进行分页(我在Absences控制器中这样做)。我可以接近这个代码:
absences_controller.php:
$this->paginate = array(
'contain' => array(
'Application' => array(
'conditions' => array(
'Application.user_id' => $viewer_id,
//'NOT' => array('Application.id' => null),
)
),
)
);
$this->set('absences', $this->paginate());
这确实会返回我想要的缺勤,但它也会返回所有没有与之关联的应用程序的缺勤。没有自定义查询,有没有办法做到这一点?我想保留我的应用程序Cakey。您可以看到我尝试将空应用程序结果剥离到代码中注释掉的“NOT”行中。
谢谢!
答案 0 :(得分:0)
尝试:
$this->paginate = array(
'conditions' => array(
'Absence.application_id >' => 0
),
'contain' => array(
'Application' => array(
'conditions' => array(
'Application.user_id' => $viewer_id
)
),
)
)
答案 1 :(得分:0)
试试这个..
$this->paginate = array('Application' => array('conditions' => 'Application.user_id' => $viewer_id));
答案 2 :(得分:0)
您正面临正常的可包含行为。
您正在做的是撤消所有缺席,并在Application.user_id = $ viewer_id时加入应用程序。您没有返回仅与您的用户相关的缺席。
获取所需内容的最简单方法是从应用程序的角度检索数据并加入Absence模型。
在applications_controller.php中
$this->set('applications', $this->paginate('Application' => array('conditions' => array('Application.user_id' => $viewer_id))));