簡體   English   中英

無法使用從CakePHP 2中的查詢獲得的變量從數據庫檢索結果

[英]Unable to retrieve results from database using a variable gained from a query in CakePHP 2

我在構建某件東西時遇到了問題。

我有兩個表,一個是作業表表,另一個是作業數據表。 作業表表存儲有關作業號,工人等的信息。“作業數據”表存儲作業號(鏈接到“作業表”表)以及與之相關的作業等。 因此,例如:

Job Sheet
---------------------------
| ID | Jobnum |   Worker  |
---------------------------
| 1  |  1234  | J.Bloggs  |
| 2  |  5678  | J.Smith   |
---------------------------

Job Data
----------------------------
| ID | Jobnum |    Work    |
----------------------------
| 1  |  1234  | Light bulb |
| 2  |  1234  | Painting   |
| 3  |  1234  | Decorating |
| 4  |  5678  | Wood Work  |
| 5  |  5678  | Cleaning   |
----------------------------

我的問題是,當我要在屏幕上打印作業表時,我希望能夠打印作業表的詳細信息,然后為每個作業表打印其相關數據,如下所示:

Job Sheets To Be Printed
--------------------------------------------------------

Job Sheet ID - 1
Job Number - 1234
Worker - J.Bloggs

Work Undertaken
---------------
Light Bulb
Painting
Decorating

***********

Job Sheet ID - 2
Job Number - 5678
Worker - J.Smith

Work Undertaken
---------------
Wood Work
Cleaning

我的問題是,盡管我可以打印作業表詳細信息(名稱等),但它只會與數據庫中的一組記錄一起返回,並將它們放入每個作業表中。 因此,即使第一個作業表中的數據應該具有自己的數據,它也會顯示在第二個作業表中。

我在Controller中的代碼是這樣的:

    $jobsheets = $this->Jobsheet->find('all', array('conditions' => array('Jobsheet.contract' => $contractid), 'recursive' => 2));
    $this->set('jobsheets', $jobsheets);

    foreach ($jobsheets as $js) {

        $jobnum[] = $js['Jobsheet']['jobnum'];

    }

    print_r($jobnum);

    foreach ($jobnum as $jn) {

        // Job Data
        $jobrec = $this->Jobdata->find('all', array('conditions' => array('Jobdata.jobsheetid' => $jn), 'recursive' => 2));
        $this->set('jobrec', $jobrec);

    }       

在視圖中,我有以下代碼:

        <?php foreach ($jobsheets as $jobsheet) { ?>
            <p>Job Sheet ID - <?php echo $jobsheet['Jobsheet']['id']; ?></p>
            <p>Job Number - <?php echo $jobsheet['Jobsheet']['jobnum']; ?></p>
            <p>Worker - <?php echo $jobsheet['Jobsheet']['worker']; ?></p>
            <p>Work Undertaken</p>
            <?php foreach ($jobrec as $jb) { ?>
                <p><?php echo $jb['Jobdata']['work'];?></p>
        <?php } } ?>

因此,目前,它顯示以下內容:

Job Sheets To Be Printed
--------------------------------------------------------

Job Sheet ID - 1
Job Number - 1234
Worker - J.Bloggs

Work Undertaken
---------------
Light Bulb
Painting
Decorating

***********

Job Sheet ID - 2
Job Number - 5678
Worker - J.Smith

Work Undertaken
---------------
Light Bulb
Painting
Decorating

我該怎么做才能解決此問題?

做出控制上的改變

 foreach ($jobnum as $jn) {

            // Job Data
            $jobrec[] = $this->Jobdata->find('all', array('conditions' => array('Jobdata.jobsheetid' => $jn), 'recursive' => 2));
            $this->set('jobrec', $jobrec);

        } 

而這種改變

 <?php $i=0; ?>
    <?php foreach ($jobsheets as $jobsheet) { ?>

                <p>Job Sheet ID - <?php echo $jobsheet['Jobsheet']['id']; ?></p>
                <p>Job Number - <?php echo $jobsheet['Jobsheet']['jobnum']; ?></p>
                <p>Worker - <?php echo $jobsheet['Jobsheet']['worker']; ?></p>
                <p>Work Undertaken</p>
                <?php foreach ($jobrec[$i] as $jb) { ?>
                    <p><?php echo $jb['Jobdata']['work'];?></p>
            <?php }
           $i++;
 } ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM