cakephp 3查询未执行

时间:2016-11-25 13:49:14

标签: php mysql cakephp cakephp-3.0 cake-bake

我是cakephp3的新人。我试图执行下面的查询,但它显示我错误。

$lifeinsurances = TableRegistry::get('LifeInsurances')->find("all");
$life_insurances = $lifeinsurances->find()
    ->join([
        'table' => 'institutions',
        'alias' => 'institutions',
        'type' => 'LEFT',
        'conditions' => 'institutions.id = LifeInsurances.institute_id',
    ]);

我修复了之前的查询。现在我只得到一个表数据。

修改

现在我用蛋糕烘焙创建了关联。但是出现了这个时间的新错误。以下是我的代码。

public function index() { 
    $this->paginate = [
        'contain' => ['Institutions']
    ];
    $lifeInsurances = $this->paginate($this->LifeInsurances);
    $this->set(compact('lifeInsurances'));
    $this->set('_serialize', ['lifeInsurances']);
}
  

内部服务器错误

如果我删除

 $this->paginate = [
        'contain' => ['Institutions']
    ];
    $lifeInsurances = $this->paginate($this->LifeInsurances);

错误停止显示

2 个答案:

答案 0 :(得分:0)

如果您的表关联设置正确(如果您使用bake创建代码,则应自动设置),您应该能够简单地说:

$lifeinsurances = TableRegistry::get('LifeInsurances')
    ->find('all')
    ->contain(['Institutions']);

答案 1 :(得分:0)

如果要包含工作,则需要在各自的模型中定义关联(如果是cakephp 3.x,则位于表文件夹中)。 由于您说您已经烘焙模型,请确保在相应的模型中定义关系。

这可能是它抛出错误的原因。

通常,当您在数据库中创建了所有表格时,您应该烘焙模型。因为在烘焙模型后添加表不会在新模型中定义关系,您必须明确定义它。

看看这个 - How associations get defined when code is baked in Cakephp

还要检查表中定义的外键的命名约定。 Cakephp使用此命名约定来定义模型之间的关系。

此外,如果您可以发布错误日志,以便找到更准确的问题解决方案,那就太棒了。