2012-10-17 51 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命名。