2012-10-17 79 views
1

表:graduate_applicants

CREATE TABLE IF NOT EXISTS `graduate_applicants` (
    `grat_id` int(10) NOT NULL auto_increment, 
    `studentnum` int(9) NOT NULL, 
    `QuarterID` int(10) NOT NULL, 
    PRIMARY KEY (`grat_id`) 
) 

表:stu_students

CREATE TABLE IF NOT EXISTS `stu_students` (
    `id` int(11) NOT NULL auto_increment, 
    `studentid` int(9) default NULL, 
    `firstname` varchar(50) default NULL, 
    `lastname` varchar(50) default NULL, 
    `email` varchar(100) default NULL, 
    PRIMARY KEY (`id`), 
    KEY `studentid` (`studentid`), 
) 

型号:

class GraduateApplicant extends AppModel{ 

var $name = 'GraduateApplicant'; 

var $tablePrefix = ''; 

var $belongsTo = array('Student' => array('className' => 'Student','foreignKey' => false,''conditions' => array('Student.studentid=GraduateApplicant.studentnum'),'fields' => '','order' => ''),); 

} 

控制器:

$list = $this->paginate('GraduateApplicant'); 

我不明白为什么$ list是空的?

+2

您是将它包含在'contains'还是''recursive''中?此外,您的示例模型在'条件'之前的'$ belongsTo'定义中有额外的引号。最后,显示你的SQL。 – jeremyharris

+0

为什么字段设置为''? –

+0

你可以发布你的学生模型吗? –

回答

0

如果您设置好表格以正确反映它们之间的关系,那么CakePHP会让您的生活更轻松。您可以将代码减少90%,因为您不必尝试手动指定表格的链接方式。

students 
--------------------------------------------- 
id | firstname | lastname | email 


graduate_applicants 
------------------------------------ 
id | student_id | quarter_id 

那么你的模型应该是简单的:

class GraduateApplicant extends AppModel { 

    public $belongsTo = array('Student'); 

} 

如果它是一个选择,我会建议正确设置你的数据库表这样的,而不是让学生ID列在不同的叫法不同的东西表格(Student.studentid,GraduateApplicant.studentnum

如果您命名您的模型以正确反映您的表名称,它也将使您的生活更加轻松。您的表格被称为stu_students,但您的型号被称为Student。您应该为您的表students和您的型号Student,您的表stu_students和您的型号StuStudent命名。