sql >> データベース >  >> RDS >> Mysql

ActiveRecord where_in()と配列

    渡そうとしている配列は多次元配列です。代わりにこれを試してください:

    $ids = array();
    foreach ($query->result_array() as $id)
        {
            $ids[] = $id['id'];
        }
    
    $this->db->where_in('id', $ids);
    

    反復なしでquery->result_array()をフラット化することはできません。ただし、アプリケーションでこの種のクエリを頻繁に処理する必要があり、PHP 5.3がインストールされている場合は、次の関数をCodeigniterヘルパーファイル(または他の適切な場所)に配置して、配列をフラット化するのに役立てることができます。

    function flatten(array $array) {
        $return = array();
        array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
        return $return;
    }
    
    を返します

    そしてあなたの場合、それをこのように使ってください:

        $ids = flatten($query->result_array());
        $this->db->where_in('id', $ids); 
    



    1. mysqliコードとcall_user_func_array()に表示されるエラー

    2. 開始日と終了日の間の日付の検索

    3. RDBMSとNoSQLのブリッジング:2DXUIクラスターの概要

    4. 同じクエリ内の複数のテーブルのALTER列