0

私が構築しているもので問題が発生しました。

2 つのテーブルがあります。1 つはジョブ シート テーブルで、もう 1 つはジョブ データ テーブルです。ジョブ シート テーブルには、ジョブ番号、ワーカーなどに関する情報が格納されます。ジョブ データ テーブルには、ジョブ番号 (ジョブ シート テーブルにリンクされている) とそれに関連するジョブなどが格納されます。たとえば、次のようになります。

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

私の問題は、ジョブ シートの詳細 (名前など) を印刷することはできますが、データベースから 1 セットのレコードしか返されず、それらを各ジョブ シートに入れることです。したがって、最初のジョブ シートのデータは、2 番目のジョブ シートにも表示されますが、独自のデータが必要です。

コントローラーの私のコードは次のとおりです。

    $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

これを修正するにはどうすればよいですか?

4

1 に答える 1

1

この変更をコントロールで行う

 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++;
 } ?>
于 2012-08-25T13:41:57.467 に答える