CakePHP从另一个模型检索数据
我是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',
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?