1

表:卒業生_志願者

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

モデル:</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 に答える