2016-11-25 131 views
0

我是cakephp3中的新成员。我试图执行下面的查询,但它显示我的错误。cakephp 3查询未执行

$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); 

错误停止显示

回答

0

如果你有你的表关联设置正确(这是他们应该自动如果您使用bake来创建您的代码),您HOULD能够简单地说:

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

我没有任何关联。我可以像加入蛋糕2.x一样检索结果吗? –

0

如果你想包含的工作,你需要在相应的模型来定义协会(谎言表文件夹中的CakePHP 3.X的情况下)。 既然你说你烘焙了模型,确保在各自的模型中定义关系。

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

正常情况下,当您创建数据库中的所有表时,应该烘焙模型。由于在烘焙模型后添加表格不会在新模型中定义关系,而必须明确定义它。

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

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

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