0

すべて単一のデータベースからデータを取得している Web サイトがたくさんあります。これらはすべてほぼ同一で、CodeIgniter 上に構築されています。

それぞれに、そのサイトに固有のデータを含む個別のデータベースがあります。

ユニバーサル データベース: TABLE 'courses' = 列: id、course_name、price、external_link、tracking_link

サイト固有のデータベース: TABLE 'courses' = 列: id、active、description

コースのプールと、各サイトがユニバーサル データベースから取得するコース データがありますが、各サイトはそれらのコースのどれが「アクティブ」であるかを判断できます。サイト固有のデータベースから「アクティブ」= 1 の行のすべての ID を取得し、それらを配列に渡すことができます。

しかし、そのクエリの ID をユニバーサル データベースのフィルターとして使用して、そのコース データをサイトのさまざまな部分に取り込みたいと考えています。

これが私のモデルです:

public function getActiveCourses() {

    $local_db = $this->load->database('local', TRUE);
    $universal_db = $this->load->database('universal', TRUE);       


    $activeCourses =    $local_db
                ->where('active', 1)
                ->select('id')
                ->get('courses');
    $activeList = $activeCourses->result_array();



    $allCourses =   $universal_db
            ->where('id', $activeList)
            ->get('courses');

    return $allCourses->result_array();

}

しかし、次のエラーが表示されます

 Error Number: 1054

 Unknown column 'Array' in 'where clause'

 SELECT * FROM (`courses`) WHERE `id` = Array

 Filename: /models/courses.php

 Line Number: 39

39 行目は次のとおりです。

$allCourses =       $universal_db
            ->where('id', $activeList)
            ->get('courses');  <== Line 39

return $allCourses->result_array();

私はこれを何時間も検索して遊んでいます。どんな助けでも大歓迎です。

CI と php は初めてなので、必要に応じて詳細を提供できます。すぐにわからない、最も必要なもの。

トレイ

4

1 に答える 1

0

$activeList は配列ですが、代わりに単一の値を指定する必要があります。

$activeList = $activeCourses->result_array(); // see, "result_array"
// here you're returning the row in array format (array ['id'] =>...)
$allCourses =   $universal_db
            ->where('id', $activeList)  // here are you using the whole array!
            ->get('courses');

これは次のようになります。

$allCourses =   $universal_db
            ->where('id', $activeList['id']) // passing the specific array index
            ->get('courses');
于 2012-12-25T09:21:06.240 に答える