Cakephp与被使用两次的用户id有许多粗略的关系

Cakephp与被使用两次的用户id有许多粗略的关系,php,mysql,cakephp,Php,Mysql,Cakephp,我已经创建了hasManyThrough表,如下所示: id用户\u id朋友\u id 我还有如下用户表: id用户名密码 我希望用户id和朋友id都属于与用户id列的关系。所以我写了以下两个模型: 朋友模型 class Friend extends AppModel { var $name = 'Friend'; //The Associations below have been created with all possible keys, those that are

我已经创建了hasManyThrough表,如下所示:

id用户\u id朋友\u id

我还有如下用户表: id用户名密码

我希望用户id和朋友id都属于与用户id列的关系。所以我写了以下两个模型:

朋友模型

class Friend extends AppModel {
    var $name = 'Friend';
    //The Associations below have been created with all possible keys, those that are not needed can be removed

        var $belongsTo = array(
            'User' => array(
                'className' => 'User',
                'foreignKey' => 'user_id',
                'conditions' => '',
                'fields' => '',
                'order' => ''
            ),
            'Friend' => array(
                'className' => 'User',
                'foreignKey' => 'friend_id',
                'conditions' => '',
                'fields' => '',
                'order' => ''
            )
        );
    }
用户模型

class User extends AppModel {
    var $name = 'User';
    var $displayField = 'username';
var $hasMany = array(
        'User' => array(
            'className' => 'Friend',
            'foreignKey' => 'user_id',
            'dependent' => false,
            'conditions' => '',
            'fields' => '',
            'order' => '',
            'limit' => '',
            'offset' => '',
            'exclusive' => '',
            'finderQuery' => '',
            'counterQuery' => ''
        ),
        'Friend' => array(
            'className' => 'Friend',
            'foreignKey' => 'friend_id',
            'dependent' => false,
            'conditions' => '',
            'fields' => '',
            'order' => '',
            'limit' => '',
            'offset' => '',
            'exclusive' => '',
            'finderQuery' => '',
            'counterQuery' => ''
        )
    );
}
我不知道为什么,但当我试图通过脚手架中的控制器查看时,出现了500个服务器错误??创建错误SQL的模型配置是否有问题

好吧,根据一些论坛的说法,这个错误似乎是由Zend Optimizer造成的。这是在烘焙时创建分段错误

我无法在第三方托管服务器中关闭此功能,因此我可能必须移动到本地服务器并进行测试,以便查看错误

好的,下面是一个错误,它很长,所以我不打算把所有的都放进去,但下面给出了一点想法:

Fatal error: Maximum function nesting level of '100' reached, aborting! in /usr/share/php/cake/libs/debugger.php on line 248 Call Stack: 0.0011 352048 1. {main}() 

最可能的问题是由于友元模型构造的嵌套而发生的,这是由于用户和友元表使用了相同的友元别名而发生的。下面是我想发生的事情:

正在初始化的友元模型,它在模型绑定期间在其构造中初始化用户模型。 现在,当初始化用户模型时,在其绑定过程中,它尝试将别名为User的友元模型绑定,但由于在模型中使用了Singleton模式,而不是友元模型实例ClassRegistry返回User的实例,从而将用户模型绑定到自身。 同样,当用户首先初始化时也是如此。更改关系的别名,如Friend_2, 或者别的什么(不要在模型关系中重复别名)

看看我的答案。这是一样的,但与朋友,而不是追随者

您只需使用user_id user id字段和child_user id Friend id创建一个user_users表,就可以再次使用user_users表创建类似的关系,例如user HABTM followers、user HABTM followers


很抱歉回复太晚,我以为我一天前就发布了答案,但显然没有发布。

不要查找错误数字。检查错误原因。Protip:始终在本地服务器上开发,而不是在远程/生产服务器上开发。确定找到了原因!我不能使用与相关模型名称相同的关联名称!!把朋友变成朋友解决了这个问题!嗨,史瑞,对不起,现在不是这样。您需要重复alias,并且它们需要在两个模型上匹配,在这两个模型上它们与HasMany表相关。这个问题与使用与型号名称相同的别名有关。事实上,我在回答中也提到了同样的问题,但我无法很好地解释它。而且我的回答中的拼写错误使它更加混乱。