CakePHP:在多模型上查找数据

时间:2014-04-25 12:54:38

标签: cakephp model

我有一些包含多个关联的表产品 例如:

Schema

我希望用于查看有条件的产品的所有数据

这是产品型号:

<?php
  class Product extends Model {
    public $hasAndBelongsToMany = array('Label','PircingScale');
    public $hasMany = array('LabelR','PircingScaleR');
  }

标签型号:

<?php
  class Label extends Model {
    public $hasAndBelongsToMany = array('Product');
   }

关系模型:

<?php
    class LabelR extends Model {
       public $useTable = 'labels_products';
       public $belongsTo = array('Product','Label');
    }

与pircing_scale模型相同

现在我在索引控制器上进行查找:

<?php
 class IndexController extends AppController {
      public $uses = array('Product','Label','PircingScale');

      public function index() {      
         $this->set('lastNewProduct', $this->Product->LabelR->find('all', array(
           'conditions' => array('Label.id' => 1),
           'limit' => 3,
         )));
      }
}

在我看来,我想在pircing_scale中显示有关所有产品的信息

1 个答案:

答案 0 :(得分:0)

使用可包含的

Containable behavior是一项核心行为,旨在让您定义查找结果的范围。

要使用它,只需将其添加到您要查询的模型中,或者将AppModel添加到任何模型中即可。

然后你的发现电话看起来像这样:

$this->Product->LabelR->find('all', array(
    'contain' => array(
        'Label',
        'Product' => array(
            'PircingScale'
        )
    ),
    'conditions' => array('Label.id' => 1),
    'limit' => 3,
 ));