【问题标题】:CakePHP HABTM model problemCakePHP HABTM 模型问题
【发布时间】:2011-05-24 19:05:25
【问题描述】:

我在使用 CakePHP HABTM 时遇到问题。

我有以下型号。

class Repositorio extends AppModel{
    var $name="Repositorio";

    var $hasAndBelongsToMany = array(
        'Sesion' =>
            array(
                'joinTable' => 'sesions_repositorios',
                'dependent' => true 
            )
        );

    var $order=array('Repositorio.name'=>'ASC');
}

class Sesion extends AppModel{
    var $name="Sesion";

    var $belongsTo=array(
        'SesionsEstado',
        'Asignatura',
        'User'
    );

    var $hasAndBelongsToMany = array('Repositorio'=>
        array(
            'joinTable'=>'sesions_repositorios',
            'dependent' => true 
        )
    );

    var $order=array('Sesion.ffin'=>'ASC');
}

还有以下数据库表。

CREATE TABLE sesions (
  id INT(11) NOT NULL AUTO_INCREMENT,
  user_id INT(11) NOT NULL,
  sesions_estado_id INT(11) NOT NULL,
  asignatura_id INT(11) NOT NULL,
  name VARCHAR(100) NOT NULL,
  finicio DATETIME NOT NULL,
  ffin DATETIME NOT NULL,
  created DATETIME NOT NULL,
  modified DATETIME NOT NULL,
  PRIMARY KEY(id),
  INDEX sesions_FKIndex1(sesions_estado_id),
  INDEX sesions_FKIndex2(asignatura_id),
  INDEX sesions_FKIndex3(user_id)
);

CREATE TABLE repositorios (
  id INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  created DATETIME NOT NULL,
  modified DATETIME NOT NULL,
  PRIMARY KEY(id)
);

CREATE TABLE sesions_repositorios (
  id INT(11) NOT NULL AUTO_INCREMENT,
  sesion_id INT(11) NOT NULL,
  repositorio_id INT(11) NOT NULL,
  PRIMARY KEY(id),
  INDEX sesions_repositorios_FKIndex1(sesion_id),
  INDEX sesions_repositorios_FKIndex2(repositorio_id)
);

当我将数据保存在存储库中时一切正常,即它对表“repositorios”执行INSERT,并在表“sesions_repositorios”上执行相应的INSERT。

当我获得特定用户的存储库列表时,我的问题就出现了。代码是这样的。

class RepositoriosController extends AppController{
...
$r=$this->Repositorio->Sesion->find('all', array('conditions'=>array('user_id'=>$this->Session->read('Auth.User.id'))));
var_dump($r);
...
}

$r 变量不包含 user_id 的过滤数据,为什么?,我做错了什么?

我没有设置外键,会不会是这个问题?

感谢您的帮助。

【问题讨论】:

  • 会话读取语句是什么?我无法全部阅读

标签: php cakephp has-and-belongs-to-many


【解决方案1】:

我认为您需要添加 'recursive' => 1 之类的内容或您希望它在查询中搜索链接模型的任何深度。

$r=$this->Repositorio->Sesion->find('all', array('conditions'=>array('user_id'=>$this->Session->read('Auth.User.id')),'recursive'=>1));

【讨论】:

    【解决方案2】:

    对不起,代码实际上是完全正确的。因其他问题而失败。

    感谢一切。

    您好!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      相关资源
      最近更新 更多