CakePHP:有没有办法在HasandBelongTomany的定义中包含变量?

CakePHP:有没有办法在HasandBelongTomany的定义中包含变量?,cakephp,model,Cakephp,Model,我最近开始使用CakePHP,并试图定义用户特定的字段首选项。基本上,我希望每个用户都能够指定他/她希望在表中看到的字段 为此,我有一个users表、fields表和fields\u users表。最后一个表只是一个字段id和用户id,因此代码知道如何将该字段与该用户链接 到目前为止,我已经为“用户”创建了一个控制器/模型,为“字段”创建了一个控制器/模型,并将它们与hasandbelongtomany属性相链接。例如,在“Field”模型中,我定义了以下属性: ` 变量$hasAndBelon

我最近开始使用CakePHP,并试图定义用户特定的字段首选项。基本上,我希望每个用户都能够指定他/她希望在表中看到的字段

为此,我有一个users表、fields表和fields\u users表。最后一个表只是一个字段id和用户id,因此代码知道如何将该字段与该用户链接

到目前为止,我已经为“用户”创建了一个控制器/模型,为“字段”创建了一个控制器/模型,并将它们与hasandbelongtomany属性相链接。例如,在“Field”模型中,我定义了以下属性:

` 变量$hasAndBelongsToMany=数组

  'User' => array (
   'className' => 'User',
   'foreign_key' => 'field_id',
   'join_table' => 'fields_users',
   'fields' => array( 'User.id' ),
   'conditions' => array( 'User.id' => 2 ),
   'unique' => false,
;`

如上所示,数组“条件”部分中的“User.id”是硬编码的

我的问题是:如何将此属性的“条件”部分设置为当前用户的id

显然,我只关心当前用户的字段首选项,但目前我正在获取每个人的用户信息


在初始属性定义中将其设置为变量不起作用,我不确定应该在什么时候这样做,或者是否有更好的方法。在beforeFilter中执行此操作不起作用,而且我似乎无法从模型的构造函数访问$\u会话。您可以通过$this->Auth->user'id获取当前用户id。

让我更清楚一点,我知道如何获取用户id等,我知道如何从控制器和模型设置“hasandbelongtomany”属性。问题是,即使我在控制器的“beforeFilter”函数中修改了“HasandBelongToMany”属性,使用该属性的关键代码似乎已经执行,这些条件并没有被考虑进去,我想要的只是能够得到某种数据结构,其中包括为当前用户指定的字段信息。现在,我可以得到这个,但是我为每个用户都得到了它。我只是把它改成了下面的,现在它似乎可以工作了。函数beforeFilter{parent::beforeFilter;$user\u id=$this->Session->read'user.id';$this->Field->hasandbelongtomany['user']['conditions']=array'user.id'=>$user\u id;}这真是奇怪,因为我尝试了各种方法让它运行。在此之前,我想可能是我用初始声明中的值覆盖了整个数组。这些值似乎在_构造和beforeFilter之间的某个时间被cake修改了。无论如何,很抱歉打扰你。谢谢你告诉我这件事。