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`)
) 

表:学生学生

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`),
 )

型号:</p>

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 是空的?

4

1 回答 1

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

于 2012-10-18T16:41:13.043 回答