0

誰かが私を助けてくれるなら、いくつかの指針が必要な問題があります。

私は CodeIgniter を使用しており、タイムシート リストの各行のクライアント名、ジョブ名、およびタスクを表示する必要があります。毎日の時間はリストで編集可能ですが、上記の 3 つのフィールドは静的です。現在、timesheetEntries テーブルに格納されているクライアント、ジョブ、およびタスクの ID を表示していますが、タイムシート エントリの各行に個別のテーブルから正しい名前を表示する必要があります。

現在の状態では、正しい結果を返し、他のテーブルへのリンクとは別にうまく機能します。

私は解決策を見つけることができず、コードの盲目に苦しんでいるので、これについては気が狂っています。

どうもありがとう

モデル

function getAllEntriesByTimesheet($id){
    $data = array();
    $options = array('timesheet_id' => $id);
    $Q = $this->db->get_where('timesheetEntries', $options);
    if ($Q->num_rows() > 0){
        foreach ($Q->result_array() as $row){
            $data[] = $row;
        }
    }
    $Q->free_result();    
    return $data; 
}  

コントローラ

function id($id){
    $data['title'] = 'Timesheets';
    $data['entry'] = $this->timesheet_model->getAllEntriesByTimesheet($id);
    $data['sheet'] = $this->uri->segment(3);
    $data['header'] = 'default/header';
    $data['main'] = 'timesheet_view';
    $data['footer'] = 'default/footer';
    $data['timesheettab'] = 'current';
    $data['expensestab'] = '';
    $data['holidaytab'] = '';
    $data['admintab'] = '';
    $this->load->vars($data);
    $this->load->view('default/default_view');
}

意見

$datestring = '%Y-%m-%d';
if (count($entry)){
    foreach ($entry as $key => $list){
        $dateNow = mdate($datestring);
        $entryId = $list['entry_id'];
        $sheet = $list['timesheet_id'];
        $clientId = $list['client_id'];
        $jobId = $list['job_id'];
        $taskId = $list['task_id'];
        $fridayHrs = $list['friday_hrs'];
        $saturdayHrs = $list['saturday_hrs'];
        $sundayHrs = $list['sunday_hrs'];
        $mondayHrs = $list['monday_hrs'];
        $tuesdayHrs = $list['tuesday_hrs'];
        $wednesdayHrs = $list['wednesday_hrs'];
        $thursdayHrs = $list['thursday_hrs'];
        echo '<tr>'
            .form_open('/timesheet/update_entry')
            .form_hidden('entry_id', $entryId)
            .form_hidden('timesheet_id', $sheet)
            .form_hidden('date_modified', $dateNow).
            '<td>'.$clientId.'</td>
            <td>'.$jobId.'</td>
            <td>'.$taskId.'</td>
            <td class="studio">'.form_input('monday_hrs', $mondayHrs).'</td>
            <td class="studio">'.form_input('tuesday_hrs', $tuesdayHrs).'</td>
            <td class="studio">'.form_input('wednesday_hrs', $wednesdayHrs).'</td>
            <td class="studio">'.form_input('thursday_hrs', $thursdayHrs).'</td>
            <td class="studio">'.form_input('friday_hrs', $fridayHrs).'</td>
            <td class="studio">'.form_input('saturday_hrs', $saturdayHrs).'</td>
            <td class="studio">'.form_input('sunday_hrs', $sundayHrs).'</td>
            <td class="icon">'.form_submit('', 'Update','class="update"').'</td>
            <td class="icon"><a href="/timesheet/edit_entry/'.$sheet.'/'.$entryId.'"><img src="/images/sitewide/edit.png" alt="Edit Entry" width="24" height="24" /></a></td>
            <td class="icon"><a href="/timesheet/delete_entry/'.$sheet.'/'.$entryId.'"><img src="/images/sitewide/delete.png" alt="Delete Entry" width="24" height="24" /></a></td>'
            .form_close()
            .'</form></tr>';    
    }
}

これらは、関連するテーブルのデータベース テーブル スキーマです。

タスク

+------------------+-------------------+--------+------+----------+--------+
| Field            | Type              | Null   | Key  | Default  | Extra  |
+------------------+-------------------+--------+------+----------+--------+
| task_id          | int(4) unsigned   | NO     | PRI  | NULL     | AI     |
| task_name        | varchar(100)      | NO     |      | NULL     |        |
| task_type        | int(2)            | NO     |      | 2        |        |
| task_code        | varchar(10)       | NO     |      | NULL     |        |
+------------------+-------------------+--------+------+----------+--------+

クライアント

+------------------+-------------------+--------+------+----------+--------+
| Field            | Type              | Null   | Key  | Default  | Extra  |
+------------------+-------------------+--------+------+----------+--------+
| client_id        | int(4) unsigned   | NO     | PRI  | NULL     | AI     |
| client_name      | varchar(100)      | NO     |      | NULL     |        |
+------------------+-------------------+--------+------+----------+--------+

仕事

+------------------+-------------------+--------+------+----------+--------+
| Field            | Type              | Null   | Key  | Default  | Extra  |
+------------------+-------------------+--------+------+----------+--------+
| job_id           | int(6) unsigned   | NO     | PRI  | NULL     | AI     |
| job_number       | varchar(6)        | NO     |      | NULL     |        |
| client_id        | int(4)            | NO     |      | NULL     |        |
| job_name         | varchar(100)      | NO     |      | NULL     |        |
| create_date      | date              | NO     |      | NULL     |        |
| start_date       | date              | NO     |      | NULL     |        |
| account_handler  | varchar(4)        | NO     |      | NULL     |        |
| studio_resource  | varchar(4)        | NO     |      | NULL     |        |
| action           | varchar(50)       | NO     |      | NULL     |        |
| by_whom          | varchar(10)       | NO     |      | NULL     |        |
| deadline         | date              | NO     |      | NULL     |        |
| job_status       | varchar(50)       | NO     |      | NULL     |        |
+------------------+-------------------+--------+------+----------+--------+

タイムシートエントリ

+------------------+-------------------+--------+------+----------+--------+
| Field            | Type              | Null   | Key  | Default  | Extra  |
+------------------+-------------------+--------+------+----------+--------+
| entry_id         | int(10) unsigned  | NO     | PRI  | NULL     | AI     |
| user_id          | int(10)           | NO     |      | NULL     |        |
| timesheet_id     | int(5)            | NO     |      | NULL     |        |
| client_id        | int(4)            | NO     |      | NULL     |        |
| job_id           | int(4)            | NO     |      | NULL     |        |
| task_id          | int(2)            | NO     |      | NULL     |        |
| monday_hrs       | decimal(4,2)      | NO     |      | 0.00     |        |
| tuesday_hrs      | decimal(4,2)      | NO     |      | 0.00     |        |
| wednesday_hrs    | decimal(4,2)      | NO     |      | 0.00     |        |
| thursday_hrs     | decimal(4,2)      | NO     |      | 0.00     |        |
| friday_hrs       | decimal(4,2)      | NO     |      | 0.00     |        |
| saturday_hrs     | decimal(4,2)      | NO     |      | 0.00     |        |
| sunday_hrs       | decimal(4,2)      | NO     |      | 0.00     |        |
| total_hrs        | decimal(4,2)      | NO     |      | 0.00     |        |
| date_entered     | date              | NO     |      | 0.00     |        |
| date_modified    | date              | NO     |      | 0.00     |        |
+------------------+-------------------+--------+------+----------+--------+

解決

András Rátz提供

モデル

function getAllEntriesByTimesheet($id){
    $data = array();
    $this->db->select('*');
    $this->db->join('tasks', 'tasks.task_id = timesheetEntries.task_id', 'left');
    $this->db->where('timesheetEntries.timesheet_id',$id);
    $Q = $this->db->get('timesheetEntries');
    if ($Q->num_rows() > 0){
        foreach ($Q->result_array() as $row){
            $data[] = $row;
        }
    }
    $Q->free_result();    
    return $data; 
} 

ビューには変数が必要です

$taskId = $list['task_id']; 

に変更

$taskId = $list['task_name'];

ソートされたおかげ:)

4

2 に答える 2

0

テーブル名を書いていなかったので、ここに例を示します。モデルを変更する必要があります。

$this->db->select('*');
$this->db->from('timesheetEntries');
$this->db->join('otherTable', 'otherTable.id = timesheetEntries.taskId', 'left');
$this->db->where('timesheetEntries.timesheet_id',$id);
$Q = $this->db->get();

$ this-> db-> get()では、get部分を空白のままにします。これは、fromを使用すると、すでにテーブルが選択されているためです。正確なテーブル構造がないと、正しい構文を書くのは困難です。

于 2012-08-13T20:50:17.217 に答える
0

たぶんそれは私だけですが、これはデータベース側に向けられているようです。データベースの構造を知らなければ、必要なものを提供するビューをデータベース内に作成し、このビューからクエリを実行してデータを返すことを提案する以上のことは難しいでしょう。

于 2012-08-13T18:56:48.690 に答える