cakephp在不使用连接的情况下链接表

时间:2015-03-27 12:27:37

标签: cakephp

我只想知道如何使用cakephp的find(或类似)方法获得以下查询的结果。 从a,b中选择*,其中a.id = b.a_id

我知道,使用cakephp连接或查询方法可以实现相同的结果。

1 个答案:

答案 0 :(得分:0)

为了使用find方法,您的A和B模型实际上需要关联。根据您的查询,您需要A hasMany B关系,但请检查the documentation以验证您的情况之间的正确关联。

您可以将其添加到src/Model/Table/ATable.php文件:

public function initialize(array $config)
{
    $this->hasMany('B', [
        'foreignKey' => 'a_id',
        'dependent' => true
    ]);
}

完成后,您可以使用查询查找器的contains方法从B模型中检索数据:

$query = $this->A->find('all')->contain(['B']);

或者,如果您仍在使用CakePHP 2.x(您的问题并非真正涵盖了这一点),那么它将是您的app/Model/A.php文件,并且关联代码看起来有点不同:

public $hasMany = array(
    'B' => array(
        'foreignKey' => 'a_id',
        'dependent' => true
    )
);

然后从两个表中找到数据:

// Make sure this is included in your (App)Model:
public $actsAs = array('Containable');

// Then find the data
$this->A->find('all', array(
    'contain' => array('B')
));