Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP从另一个模型检索数据_Php_Cakephp_Model - Fatal编程技术网

CakePHP从另一个模型检索数据

CakePHP从另一个模型检索数据,php,cakephp,model,Php,Cakephp,Model,我是cakephp新手,在从另一个模型检索数据方面有点问题 我的表关联如下: Items hasMany Stocks Stocks belongsTo Items Items belongsTo UnitMeasurement UnitMeasurement hasMany Items $items = $this->Item->find('all', array( 'fields' => array( 'Item.name',

我是cakephp新手,在从另一个模型检索数据方面有点问题

我的表关联如下:

Items hasMany Stocks

Stocks belongsTo Items

Items belongsTo UnitMeasurement

UnitMeasurement hasMany Items
$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'),
));
我的问题是我想向股票指数html表视图显示UnitMeasurement名称

当前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 hasMany Stocks

Stocks belongsTo Items

Items belongsTo UnitMeasurement

UnitMeasurement hasMany Items
$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'),
));

你能粘贴你的查找查询吗?在哪个模型上应用查找?@sismaster我已经编辑了我的问题。它有效。但它返回的是UnitMeasurement的ID而不是名称。我如何查看名称?如果股票没有UnitMeasurement,它不应该返回单位名称?或者我应该让另一个表包含一列Unit_id和stock_id?