首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库索引cakePHP

数据库索引cakePHP
EN

Stack Overflow用户
提问于 2014-03-26 13:53:54
回答 3查看 123关注 0票数 3

我有两张桌子,分别是“客户”和“事件”。两者之间的关系如下:

事件

代码语言:javascript
复制
var $belongsTo = array(
         ...
    'Customer'=>array(
        'className' => 'Customer',
        'foreignKey' => 'customer_id'
    )
    );

客户

代码语言:javascript
复制
var $hasMany = array(
    'Event' => array(
        'className' => 'Event',
        'foreignKey' => 'customer_id',
        'dependent' => false,
    )
);

每个客户记录都包含一个公司id,以及当前登录的用户。我想要实现的是获得所有的事件一天,只涉及到一个特定的公司,但这当然不是工作,因为事件表不持有公司id。也许下面的查找电话将有助于更好地理解这个问题:

代码语言:javascript
复制
$conditions = array('company_id'=>CakeSession::read("Auth.User.company_id"), 'date'=>date("Y-m-d", $tomorrow));
$tomorrowsEvents = $this->find('all', array(
                                'conditions'=>$conditions, 'contain'=>array('User', 'Customer')));

此外,客户属于一家公司,一家公司有许多客户,如下所示:

客户

代码语言:javascript
复制
var $belongsTo = array(
        'Company' => array(
        'className' => 'Company',
        'foreignKey' => 'company_id',
        'dependent' => false,
    ),
);

公司

代码语言:javascript
复制
    var $hasMany = array(
    'User' => array(
        'className' => 'User',
        'foreignKey' => 'company_id',
        'dependent' => false
    ),
    'Customer'=>array(
        'className' => 'Customer',
        'foreignKey' => 'company_id',
        'dependent' => false
    )
);

任何帮助都是非常感谢的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-26 16:42:36

实际上,我将通过从Customer执行这个查询“向后”,并使用可包含的行为来包含相关的事件:

代码语言:javascript
复制
$this->Customer->find('all', 
     array(
       'conditions' => array(
           'company_id' => CakeSession::read("Auth.User.company_id")
        ), 
       'contain' => array(
             'Event' => array(
                   'conditions' => array(
                         'Event.date' => date("Y-m-d", $tomorrow)
                    )
             )
        )
  ));
票数 3
EN

Stack Overflow用户

发布于 2014-03-26 14:40:34

在你的例子中,事件似乎有很多公司,公司有很多事件。这是hasAndBelongsToMany关系的理想状态。但是,您必须关注className和joinTable属性,以处理join表客户的不方便命名。

http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasandbelongstomany-habtm

票数 0
EN

Stack Overflow用户

发布于 2014-03-26 15:11:13

您需要重新考虑这个问题,因为用户可以是(客户或公司),然后他们有一个组,或者他们是一个类型的用户。然后,用户属于组或用户类型,此组可以是客户端或公司。

属于一个组的用户有许多用户

用户有许多事件,有很多用户。

您可以判断客户或公司是否属于拥有

table_____group

id ____类别____子类别

1 ____客户____示例

2 ____公司____示例

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

https://stackoverflow.com/questions/22663143

复制
相关文章

相似问题

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