1

以下にこのコードを示します。データベースのデータから CSV を生成し、正常に動作します。私の唯一の問題は、CSV に別のフィールドを追加したいということです (可能であれば最後ではなく途中で) これは可能ですか? フィールドはデータから生年月日を取得し、年齢に基づいてその人にタイトルを付けます (1994 年以降に生まれた人は、「シニア」の後に生まれた「ジュニア」です) など、年齢ごとに 4 つまたは 5 つの異なるタイトルがあります。なれ。これが理にかなっていることを願っています。

function csv_all_members(){

                $this->load->dbutil();
                $this->db->select("first_name as 'First Name', last_name as 'Last Name', phone as 'Phone', os.group as 'Group', gender as 'Gender', birth_date as 'DOB', email as 'Email', street_address as 'Address', city as 'City', province as 'Province', postal_code as 'Postal Code', country 'Country', payment_amount as 'Payment Amount', DATE_FORMAT(payment_date, '%d/%m/%Y') as 'Payment Date', an.notes as 'Notes'", false);
                $this->db->from('offline_shoppers os');
                $this->db->join('athlete_notes an', 'os.id = an.id', 'inner');
                $this->db->group_by(array("first_name", "last_name"));
                $this->db->order_by("last_name asc, first_name asc");
                $query = $this->db->get();
                header("Content-type: text/csv");
                header("Content-Disposition: attachment; filename=members_list.csv");
                header("Pragma: no-cache");
                header("Expires: 0");
                echo $this->dbutil->csv_from_result($query);
        }
4

1 に答える 1

4

それをselectステートメントに追加するだけです:

$this->db->select("IF(year(birth_date) > 1994, 'Junior, 'Senior') AS Title "

まとめると、次のようになります。

$this->db->select("
    first_name as 'First Name',
    last_name as 'Last Name',
    phone as 'Phone',
    IF(year(birth_date) > 1994, 'Junior, 'Senior') AS Title,
    os.group as 'Group',
    gender as 'Gender',
    birth_date as 'DOB',
    email as 'Email',
    street_address as 'Address',
    city as 'City',
    province as 'Province',
    postal_code as 'Postal Code',
    country 'Country',
    payment_amount as 'Payment Amount',
    DATE_FORMAT(payment_date, '%d/%m/%Y') as 'Payment Date',
    an.notes as 'Notes'");

編集:「else if」の場合は、次を使用します。

    (
    CASE 
        WHEN year(birth_date) > 1994 THEN 'Junior'
        WHEN year(birth_date) > 2000 THEN 'Jr. Junior'
        WHEN year(birth_date) > 2012 THEN 'Jr. Jr. Junior'
        ELSE 'Senior'
    END) AS Title
于 2013-09-09T20:55:36.023 に答える