2011-07-16 37 views
0

有谁知道如何改变这个查询:从diminventory其中部分号码= '350964-B22' 或部分号码在隐蔽进入CakePHP的查询与子查询

SELECT *(选择部分号码从dimparts其中parentpartnumber = '350964-B22')

在CakePHP的查询

感谢

+0

用\请退出。不同的是'blah'与''blah \'写成\''blah \\' –

回答

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 
       ) 
     ) 
) 
0

他询问CakePHP的查询不自定义SQL查询。在控制器:

$partnumber = $this->diminventory->find('all',array('conditions' => array('diminventory.partnumber' => '350964-B22'))); 
$this->set('partnumber',$partnumber); 

集函数传递变量作为$部分号码到视图。然后int view(这是.ctp文件)你需要输出数组。

foreach($partnumber as $partnumbers){ 
echo $partnumbers; 
} 

确保diminventory表有“S”的名字后,否则将无法正常工作,因为这是CakePHP的命名规范的一部分。

教程查找功能: http://book.cakephp.org/view/1018/find

0

要做到这一点完全Cake'ish,你需要使用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(其实不是Cake'ish,你应该根据conventions重命名你的表格)。