同一数据库表的多个数据模式

时间:2016-04-14 07:49:43

标签: cakephp

我在mydatabase中有一个表。我想创建两个数据模态。 cakephp有可能吗?

其他信息

有一个用户表。用户可以是教师或学生。 如果用户是教师,则有不同的模态,对于学生,也有不同的数据模式。

3 个答案:

答案 0 :(得分:0)

当然,您可以使用相同的表名创建不同的模型。为此,请使用$ useTable属性(而不是$ table)将每个模型与特定表链接:

class Teacher extends AppModel {
    public $useTable = 'User';
}

查找更详细的解决方案herealso here

答案 1 :(得分:0)

在CakePHP2中,您可以使用模型的$useTable属性来设置要使用的表:

class Example extends AppModel {
    public $useTable = 'exmp'; // This model uses a database table 'exmp'
}

看起来可能需要在CakePHP 3中以不同的方式完成(或者v3添加了不同的方式)(参见this page

use Cake\ORM\TableRegistry;

$users = TableRegistry::get('Users');
$user = $users->newEntity(['email' => 'mark@example.com']);
$users->save($user);

答案 2 :(得分:0)

在CakePHP2中

class Teacher extends AppModel {
    public $useTable = 'users';
}

但是你应该使用关系来区分不同的用户类型,你可以通过简单地让Users表包含核心信息,然后创建一个链接的UserType表来指定类型,即

  

用户表

     

id,user_type_id,用户名,密码,已创建,已修改

     

1, 1 ,Stephen,somehash,2015-04-15 00:00:00,2015-04-15   00:00:00

     

2, 2 ,Alex,somehash,2015-04-15 00:00:00,2015-04-15 00:00:00

     

3, 2 ,Jane,somehash,2015-04-15 00:00:00,2015-04-15 00:00:00

     

用户类型表

     

id,name,created,modified

     

1 ,老师,2015-04-15 00:00:00,2015-04-15 00:00:00

     

2 ,学生,2015-04-15 00:00:00,2015-04-15 00:00:00

查看上面的数据示例,您将看到Stephen是教师,Alex是学生而Jane是学生。

这使它保持中心,您不需要在多个地方编写模型方法,这些链接有更多的关系信息。

CakePHP2:http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html

CakePHP3:http://book.cakephp.org/3.0/en/orm/associations.html