我正在使用 cakephp 2.3.0。我在手册中搜索了很长时间,也搜索了 google/stackoverflow。
我对 cakephp 还有些陌生。我一直在努力让 $hasAndBelongsToMany(多对多)工作,而且我确实做到了......哇哦。但是,使用相同的模型,我无法让以下场景正常工作。
我有活动和用户模型。一个活动可以有很多用户。一个用户可以有很多活动。但是,我想在我的网页上的表格中的一行中显示活动列表以及活动的所有者。
活动表包括以下列等:
- ID
- 姓名
- 地位
- owner_fk(Users.id 的外键)
用户表包括以下列等:
- ID
- 用户名
- 密码
- 角色
我的 SQL 看起来像:
select usr.username, actv.name
from users usr, activities actv
where usr.users_id = actv.owner_fk
活动模型(用户模型有类似的代码):
class Activity extends AppModel {
var $name = 'Activity';
public $hasAndBelongsToMany = array(
'User' =>
array(
'className' => 'User',
'joinTable' => 'activities_users',
'foreignKey' => 'activities_id',
'associationForeignKey' => 'users_id',
'unique' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
我不确定 CakePHP 是否允许在同一模型中混合/匹配,例如...在同一模型中具有 $hasOne 和 $hasAndBelongsToMany。可能有一种简单的方法可以实现我想要做的事情,和/或最佳实践。我已经尝试了一些,但到目前为止还没有运气。
我想在我的控制器的下面的代码中做一些事情,但条件是我上面的 SQL 中的 where 子句。
$this->set('results', $this->Activity->find('all'));