Mysql 数据映射器ORM关系

Mysql 数据映射器ORM关系,mysql,database-design,orm,datamapper,codeigniter-datamapper,Mysql,Database Design,Orm,Datamapper,Codeigniter Datamapper,简单的调度程序项目,它包含2个表 第一个(用户)包含所有用户,第二个表包含所有预订(访问) 要获取管理员的所有预订,我运行Select*from-visions,其中admin\u id=$id,然后加入 来自用户表的访问者信息 。。。。。。。。 所以基本上 每个管理员都可以进行多次访问 访问必须包含(一)名管理员和(一)名访客 如何在datamapper orm中设置这种关系?首先,我认为,您应该有一个具有管理员id和用户id的单独表(没有帮助),而不是一个具有用户和权限的表,然后表结构将是

简单的调度程序项目,它包含2个表

第一个(用户)包含所有用户,第二个表包含所有预订(访问)

要获取管理员的所有预订,我运行
Select*from-visions,其中admin\u id=$id,然后加入
来自用户表的访问者信息

。。。。。。。。 所以基本上

每个管理员都可以进行多次访问

访问必须包含(一)名管理员和(一)名访客


如何在datamapper orm中设置这种关系?

首先,我认为,您应该有一个具有
管理员id
用户id
的单独表(没有帮助),而不是一个具有
用户
权限
的表,然后表结构将是

table1(users)
|ID|name  |type  |
|1 |demo  |admin |
|2 |demoX |client|

table2(visits)
|ID|admin_id|visitor_id|visit_date|...
|1 |1       |2         |2013-01-01|...
admin(fk)->users(id)
user(fk)->users(id)
然后,当您在应用程序中调用用户级别时,只需执行以下操作:

从特权中选择特权,其中id=
(MySQL)

您应该
始终
尝试在表中设置
id
。为此,当您从另一个表收集数据时,这将是关系数据的基础,因此在本例中,它将是特权表的
字段和用户表的字段。

从这里,您应该能够将此方法转移到或或任何您的误导性标记的意思=]


如果需要
从数据库中选择一个预订,请选择
预订
(制作一个附加表并如下所示进行追加),并查找
((privilage_id==1)和&(privilage_id==2))的预订时间。
这将查找既有管理员又有用户的日期,不要只看一个用户类型,而是看所有的用户类型,并且通过调用一个列而不是几个列来节省一些麻烦。同样,通过这种方式,您可以轻松地管理表,因为它们的名称与函数相关

    Users                                   privileges
| id |  user  | privilege_id |             | id | privilege |
| 1  | user1  |    1         |             | 1  |   user    |
| 2  | admin1 |    2         |             | 2  |   admin   |
因此,MySQL将是
SELECT date FROM booking WHERE((privilege\u id==1)和&(privilege\u id==2))
这将为您提供您所期望的结果,如果您需要清理数据以进入表,那么您将需要在一个数据库中生成两行,这将由这样的过程完成(本例将使用一个虚构的填充预订表单(使用PHP完成):


还请记住,使用此方法时,您需要从用户表中获取用户类型以获取
特权\u id

这应该可以做到:

if((isset($user) && (isset($usertype)) && (isset($usertypetwo)) && (isset($date)))
{
    if(($usertype != $usertypetwo))
     {
      "Insert BLAH BLAH"
     }
}
if((isset($user) && (isset($usertype)) && (isset($usertypetwo)) && (isset($date)))
{
    if(($usertype != $usertypetwo))
     {
      "Insert BLAH BLAH"
     }
}
class Users extends Datamapper
{
    public $has_many = array(
        'admin' => array(
            'class' => 'users',
            'other_field' => 'admin', // FK = admin_id
        ),
        'visitor' => array(
            'class' => 'users',
            'other_field' => 'visitor', // FK = visitor_id
        ),
    );
}

class Visits extends Datamapper
{
    public $has_one = array(
        'admin' => array(
            'class' => 'users',
            'join_self_as' => 'admin', // FK = admin_id
        ),
        'visitor' => array(
            'class' => 'users',
            'join_self_as' => 'visitor', // FK = visitor_id
        ),
    );
}

// then in your controller you can do:

$visit = new Visitor(1);
echo $visit->admin->name; // echo's 'demo';
echo $visit->visitor->name; // echo's 'demoX';