我只想知道如何使用cakephp的find(或类似)方法获得以下查询的结果。 从a,b中选择*,其中a.id = b.a_id
我知道,使用cakephp连接或查询方法可以实现相同的结果。
答案 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')
));