有人知道如何转换此查询:
SELECT * from diminventory
where partnumber ='350964-B22'或partnumber in(SELECT partnumber from dimparts
where parentpartnumber ='350964-b22')
由于
答案 0 :(得分:0)
我还不是100%肯定你所要求的,但这里是关于cakephp查询的简短教程。
$this->ModelName->query("SELECT * FROM tablename LIMIT 2;");
您从模型中查询,但使用文字表名。您可以使用SQL“AS”关键字重命名结果数组的键。
示例结果:
Array
(
[0] => Array
(
[tablename] => Array
(
[id] => 1304
[user_id] => 759
)
)
[1] => Array
(
[tablename] => Array
(
[id] => 1305
[user_id] => 759
)
)
)
答案 1 :(得分:0)
他要求Cakephp查询而不是自定义SQL查询。在控制器中:
$partnumber = $this->diminventory->find('all',array('conditions' => array('diminventory.partnumber' => '350964-B22')));
$this->set('partnumber',$partnumber);
set function将变量作为$ partnumber传递给视图。然后是int视图(即.ctp文件),你需要输出数组。
foreach($partnumber as $partnumbers){
echo $partnumbers;
}
确保减少表在名称后面有's',否则它将无效,因为这是Cakephp严格命名约定的一部分。
答案 2 :(得分:0)
要完全做蛋糕,你需要使用CakePHP subquery:
$dbo = $this->User->getDataSource();
$subQuery = $dbo->buildStatement(
array(
'fields' => array('`Dimpart`.`partnumber`'),
'table' => $dbo->fullTableName($this->Dimpart),
'alias' => 'Dimpart',
'conditions' => array('`Dimpart`.`parentpartnumber`' => '350964-b22'),
),
$this->Dimpart
);
$subQuery = ' `DiminventoryEntry`.`partnumber` IN (' . $subQuery . ') ';
$subQueryExpression = $dbo->expression($subQuery);
$conditions[] = $subQueryExpression;
$conditions['DiminventoryEntry.partnumber'] = '350964-B22';
$result = $this->DiminventoryEntry->find('all', compact('conditions'));
Dimpart
是表dimparts
的模型,而DiminventoryEntry
是表格diminventory
的模型(实际上不是蛋糕,你应该重命名)你的表根据conventions)。