Cakephp 2.8从三个表中提取数据,每对表有一个公共列

时间:2019-05-26 22:26:09

标签: cakephp

我有三个表,我想知道什么是正确的“查找”命令,以根据所选类别提取正确的汽车模型。

Category table
---------------------
Cat_ID Category
1      Sedan
2      SUV
3      Truck

Manufacturers tables
--------------------------
CAR_ID  Cat_ID   Manufacturer
1        1          BMW
2        1          BMW
3        2         Mercedes
4        3          Dodge

Model table
--------------
CAR_ID   Model
1        i320
2        i540
3        GL320
4        RAM

我能够根据制造商选择合适的汽车,但是当我尝试根据类别选择合适的汽车时,这是行不通的。

$catid='Sedan';

$car_id = $this->car->find('all',array('fields' => array('car.id'),'conditions' => array('car.category_id' => $catid),'order' => array('car.id' => 'desc')));

$models = $this->Model->find('all',array('conditions' => array('Model.car_id'=>$car_id),'order' => array('Model.id' => 'desc')));

如果要选择Sedan(宝马i32和i520车型),我希望输出显示。

1 个答案:

答案 0 :(得分:0)

使用连接语句

我不知道您使用的是哪个版本的cakephp,但是我正在使用cakephp 2.0。

await

如果您想限制要使用的类别,请使用以下条件

        $this->Category->find('all',[
        'joins' => [
            [
                'table' => 'Manufacturers',
                'alias' => 'Manufacturers',
                'type' => 'LEFT',
                'conditions' => [
                    'Category.Cat_ID = Manufacturers.Cat_ID'
                ]
            ],
            [
                'table' => 'Model',
                'type' => 'LEFT',
                'conditions' => [
                    'Model.CAR_ID = Manufacturers.CAR_ID'
                ]
            ]
        ]
      ]);