繁体   English   中英

CakePHP 从另一个模型检索数据

[英]CakePHP retrieve data from another Model

我是 cakephp 的新手,我在从另一个模型检索数据时遇到了一些问题。

我的表关联是这样的:

Items hasMany Stocks

Stocks belongsTo Items

Items belongsTo UnitMeasurement

UnitMeasurement hasMany Items

我的问题是我想向股票指数 html 表视图显示 UnitMeasurement Name。

当前 Html 表视图:

----------------------------------------------------------------------
Item           | Stock Balance|          Unit          |     Created |
----------------------------------------------------------------------
Microprocessor |    12        | DISPLAY UNIT NAME HERE!| 19/1/2014   |
Microcontroller|    20        | DISPLAY UNIT NAME HERE!| 19/1/2014   |             
CPU            |    12        | DISPLAY UNIT NAME HERE!| 19/1/2014   |             
----------------------------------------------------------------------

如何进行成功的查询?

谢谢。

编辑:

这是我在 StocksController 索引函数中的查找查询:

public function index() {
        $this->Stock->recursive = 0;
        $order = "Stock.id DESC";
        //set orderby
        $stock = $this->Stock->find('all',array('order'=>$order));
        $this->set('stocks', $stock);

        //query to find UnitMeasurement Name for Stocks Item
        foreach ($stock as $stocks) {
            //debug($stocks);
            $this->loadModel('Items');
            $unitMeasurement = $this->Items->find('first',array('fields'=>'unit_measurement_id','conditions'=>array('Items.id'=>$stocks['Stock']['item_id'])));
            $this->set('units',$unitMeasurement);
        }

    }

再次感谢。

检查这个模型名称总是单数请检查并让我知道它是否有效!

foreach ($stock as $stocks) {
            //debug($stocks);
            //$this->loadModel('Items');
            $this->loadModel('Item');
            $unitMeasurement = $this->Item->find('first',array('fields'=>'unit_measurement_id','conditions'=>array('Item.id'=>$stocks['Stock']['item_id'])));
            $this->set('units',$unitMeasurement);
        }

您可以进行这样的查询:

$items = $this->Item->find('all', array(
    'fields' => array(
        'Item.name',
        'SUM(Stock.amount) as amount',
        'UnitMeasurement.name',
        'Item.created',
    ),
    'joins' => array(
        array(
            'table' => "stocks",
            'alias' => "Stock",
            'conditions' => "Item.id = Stock.item_id"
        ),
        array(
            'table' => 'unit_measurements',
            'alias' => 'UnitMeasurement',
            'conditions' => 'UnitMeasurement.id = Item.unit_measurement_id',
        ),      
    ),
    'group' => array('Item.id', 'Item.unit_measurement_id'),
));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM