2011-07-16 61 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重命名你的表格)。