首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CakePHP 2.x -从表中提取数据,而不创建模型

CakePHP 2.x -从表中提取数据,而不创建模型
EN

Stack Overflow用户
提问于 2013-02-21 16:56:11
回答 1查看 266关注 0票数 0

我刚刚开始学习CakePHP,在这种情况下需要帮助。

我有一个表(学生)和相应的模型(学生),它有一个名为‘教育资质’的属性,它可以有多个值(MBA,MCA,BCA,BA,PHD),所以我创建了一个包含所有学位列表的主表。

现在,当一个学生要注册他/她自己时,他必须在资格中选择多个选项。

我想在我的视图中从数据库中获得多个选项的DegreeMst数据。我的问题是,在这许多关系中,我必须创建一个新的模型DegreeMst,然后创建与学生模型的manytomany关系。

或者,我是否可以在不创建新模型DegreeMst的情况下完成此操作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-21 17:47:19

首先,如果您发现自己需要从表中获取数据,而不需要在MVC框架中创建模型,那么您很有可能做错了什么。

如果你真的只有5个可能的值(MBA,MCA,BCA,BA,PHD),我可能只会在你的表中让它们成为5个单独的tinyint(1)字段,比如has_mba,has_mca等,然后在你的视图中将每个值显示为一个单独的复选框。这可能是最简单的方法。

如果您不想这样做,并且您肯定想要一个单独的DegreeMst表,那么您需要的是一个hasAndBelongsToMany relationship

您将需要一个单独的连接表,类似于students_degreemsts,它包含一个student_id和一个degreemst_id列。您不需要为joins表创建模型。

设置完成后,在视图中输出复选框的代码如下所示:

代码语言:javascript
运行
复制
echo $this->Form->input('Student.DegreeMst',array('label'=>'Select your degrees','multiple'=>'true'));

更新

您将需要3个数据库表和2个模型。您了解多对多(即,Cake称之为hasAndBelongsToMany)关系和joins tables

在您的数据库中,您将需要3个表,根据CakePHP信息命名:

学生(id,姓名,地址,other_field)

度(id,name,another_field)

students_degrees (id,student_id,degree_id)

最后一个表是您的连接表,它应该包含指向学生表和学位表的两个外键。在CakePHP中,连接表不需要模型或控制器。

显然,您需要为您的学生表建立一个模型,您将在其中定义您的hasAndBelongsToMany关系:

代码语言:javascript
运行
复制
public $hasAndBelongsToMany = array(
    'Degree' => array(
        'className' => 'Degree',
        'joinTable' => 'students_degrees',
        'foreignKey' => 'student_id',
        'associationForeignKey' => 'degree_id',
    ),
);

您的学位表还需要一个模型,但除非需要,否则不必在该模型中再次定义hasAndBelongsToMany关系。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14998110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档