cakephp:$ belongsTo在模型中不起作用

时间:2012-10-17 21:03:35

标签: cakephp

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

1 个答案:

答案 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.studentidGraduateApplicant.studentnum

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