0

我是新来的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);

错误停止显示

4

2 回答 2

0

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

$lifeinsurances = TableRegistry::get('LifeInsurances')
    ->find('all')
    ->contain(['Institutions']);
于 2016-11-26T00:09:25.283 回答
0

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

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

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

看看这个 - 在 Cakephp 中烘焙代码时如何定义关联

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

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

于 2016-11-29T06:03:27.850 回答