我创建了hasManyThrough表,如下所示:
id user_id friend_id
我也有如下用户表: id用户名密码
我希望user_id和friend_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根据某些论坛引起的。这在烘焙时会产生分段错误!
我无法在第三方托管服务器中关闭此功能,因此我可能需要移至本地服务器并进行测试,以便查看Cake错误。
确定下面是错误(它很长,所以我不打算把所有这些都放在下面给出一点想法):
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}()
答案 0 :(得分:0)
最常见的问题是由于Friend Model构造的嵌套而发生,并且由于对User和Friend表使用相同的 Friend 别名而发生这种问题。这就是我猜的:
首先用户初始化的情况也是如此。更改像Friend_2这样的关系的别名, 或其他东西,即不要在模型关系中重复别名。
答案 1 :(得分:0)
在CakePHP Twitter-clone: Can't get follow-system to work中查看我的答案。它是相同的,但与朋友而不是追随者。
您只需创建一个user_users表,其中包含user_id(用户ID)字段和child_user_id(朋友ID),您可以再次使用user_users表来建立类似的关系,例如用户HABTM关注者,用户HABTM关注者
对于迟到的回复感到抱歉,我以为我在一天前发布了答案,但很明显它没有发布。