CakePHP 3 - 用户属于多用户 [英] CakePHP 3 - Users belongsToMany Users

查看:30
本文介绍了CakePHP 3 - 用户属于多用户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个具体要求,要在用户之间建立关联.这让我很困惑,如何减少重复的关联、查询和结果?

I have a specific request, to build an association between users. This causes me confusion, how to reduce duplicate associations, query and results?

起点会是这样吗?

// UsersTable
$this->belongsToMany('Users', [
            'through' => 'Connections',
        ]);

如何在一个查询中获取所有关联,无论用户键入user_from"还是user_to"字段?

How to fetch all associations in one query, regardless of whether users key in "user_from" or "user_to" field?

推荐答案

如何使用别名?

您的 users 表:

class UsersTable extends Table 
{

    public function initialize(array $config)
    {
        $this->hasMany('ToConnections', [
            'className' => 'Connections',
            'foreignKey' => 'user_to'
        ]);

        $this->hasMany('FromConnections', [
            'className' => 'Connections',
            'foreignKey' => 'user_from'
        ]);

    }
}

还有你的 connections 表:

class ConnectionsTable extends Table 
{

    public function initialize(array $config)
    {
        $this->belongsTo('ToUsers', [
            'className' => 'Users',
            'foreignKey' => 'user_to'
        ]);

        $this->belongsTo('FromUsers', [
            'className' => 'Users',
            'foreignKey' => 'user_from'
        ]);

    }
}

然后您可以使用 contain() 根据需要加载相关模型.

You can then use contain() to load associated models as required.

$query = $conections->find()->contain([
    'ToUsers',
    'FromUsers'
]);

$recipients = TableRegistry::get('users');
$query = $recipients->find()->contain([
    'ToConnections.FromUsers',
]);

这篇关于CakePHP 3 - 用户属于多用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆