0

私のコントローラーには、クエリの結果のリストがあります (最大 10 行程度)。クエリの結果を使用して別のクエリで使用しようとしています。たとえば、最初のクエリは「agency_ID」(次のクエリで使用したいデータ)を引き出します

コントローラ:

$data['list_report'] = $this->reports_model->filteredReport();
$data['area_data'] = $this->reports_model->getAreaDataReport($data['list_report']);

モデル:

function getAreaDataReport($data)
{       
    $query = $this->db->query('SELECT COUNT(asa.sector_ID) AS area_count, asa.*, ags.sector
    FROM agencies_sector_association asa, agencies_sector ags WHERE agency_ID IN ('. $data->agency_ID .')
    AND asa.agency_ID = ags.ID
    GROUP BY agency_ID');
    return $query->result();
}

次のエラーが表示されます。

Message: trying to get property of non-object codeigniter model

最初のクエリ結果を print_r すると、次のようになります。

Array ( [0] => stdClass Object ( [case_ID] => 1 [reference_ID] => IFSOU001 [ID] => 1 [agency_ID] => 1 [agency_name] => Agency1 [task_ID] => 3 [task] => Domestic violence [outcome_ID] => 3 [outcome] => Protection plan no longer in place [creation_date] => 2012-12-05 ) [1] => stdClass Object ( [case_ID] => 3 [reference_ID] => NEW REFERENCE ID [ID] => 2 [agency_ID] => 1 [agency_name] => Agency1 [task_ID] => 1 [task] => Transport [outcome_ID] => 8 [outcome] => Bespoke needs based assessment received [creation_date] => 2013-05-01 ) [2] => stdClass Object ( [case_ID] => 6 [reference_ID] => REFERENCE ID [ID] => 6 [agency_ID] => 1 [agency_name] => Agency1 [task_ID] => 2 [task] => Counselling [outcome_ID] => 2 [outcome] => Improved school attendance [creation_date] => 2013-05-01 ) )

私の質問は、次のステートメントの最初のステートメントの Agency_ID を配列として使用して、1 行だけを返さないようにする方法です。この結果から 3 つの「agency_ID」の結果が返されますが、今後の検索ではさらに多くなる可能性があります。

助けてくれるすべての人に感謝します!

4

2 に答える 2

1

$data1 つのオブジェクトだけを含むオブジェクトの配列です。

$data->agency_IDと置き換えます$data[0]->agency_ID

これにより、配列内のagency_ID位置に格納されているオブジェクトのメンバー変数が得られます。[0]$data

結果の配列に複数のオブジェクトがあると仮定すると、ID を取得して文字列に格納し、この文字列をクエリで使用する必要があります

$id_str = '';
foreach($data as $agency) {
    $id_str .= $agency->agency_ID . ', ';
}
$id_str = rtrim($id_str, ', '); //remove the trailing comma and space

$data->agency_IDクエリを次のように置き換えます$id_str

于 2013-05-03T09:21:41.193 に答える
0

INステートメントに収まるように、結果配列を再フォーマットする必要があります。のような形式で23, 17, 20。は$this->reports_model->filteredReport();で返されresult_array()ます。

$data['list_report'] = $this->reports_model->filteredReport();

$data_list = array();

foreach($data['list_report'] as $lp) {
    $data_list[] = $lp->agency_ID;
}

$data['area_data'] = $this->reports_model->getAreaDataReport(implode(',',$data_list));

次に、クエリで文字列を使用します。

function getAreaDataReport($data)
{       
    $query = $this->db->query('SELECT COUNT(asa.sector_ID) AS area_count, asa.*, ags.sector
    FROM agencies_sector_association asa, agencies_sector ags WHERE agency_ID IN ('.$data.')
    AND asa.agency_ID = ags.ID
    GROUP BY agency_ID');
    return $query->result();
}
于 2013-05-03T09:28:45.103 に答える