2016-04-26 16 views
5

私は、データベース内の列に配列型を格納し、どこ機能下記のようn_group_code_id間の配列($ GID) を比較するために使用し、それをバック選択します。ここで Laravelのwhere句を使ってデータベースに配列の値を格納することは可能ですか?

CREATE TABLE IF NOT EXISTS `tb_notification` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `n_user_id` int(10) NOT NULL, 
    `n_group_code_id` varchar(30) NOT NULL, 
    `n_source_id` int(10) NOT NULL, 
    `n_activity_type` varchar(100) NOT NULL, 
    `n_create_times` datetime NOT NULL, 
    `n_description` varchar(160) NOT NULL, 
    `n_status` int(2) NOT NULL, 
    `url` varchar(200) NOT NULL, 
    `updated_at` datetime NOT NULL, 
    `created_at` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=542 ; 

-- 
-- Dumping data for table `tb_notification` 
-- 

INSERT INTO `tb_notification` (`id`, `n_user_id`, `n_group_code_id`, `n_source_id`, `n_activity_type`, `n_create_times`, `n_description`, `n_status`, `url`, `updated_at`, `created_at`) VALUES 
(535, 66, '[7,11,11,11]', 1, 'Issue Till', '2016-04-25 07:04:54', 'Issue Till', 0, '0', '2016-04-25 07:59:54', '2016-04-25 07:59:54'), 
(536, 66, '[7,11,11,11]', 1, 'Issue Till', '2016-04-25 08:04:47', 'Issue Till', 0, '0', '2016-04-25 08:15:47', '2016-04-25 08:15:47'), 
(537, 66, '[7,11,11,11]', 159, 'Transfer till', '2016-04-25 08:04:45', 'Transfer till', 0, '0', '2016-04-25 08:20:45', '2016-04-25 08:20:45'), 
(538, 66, '[7,11,11,11]', 160, 'Transfer till', '2016-04-25 09:04:04', 'Transfer till', 0, '0', '2016-04-25 09:06:04', '2016-04-25 09:06:04'), 
(539, 66, '[7,11,11,11]', 1, 'Issue Till', '2016-04-26 07:04:29', 'Issue Till', 0, '0', '2016-04-26 07:35:29', '2016-04-26 07:35:29'), 
(540, 66, '[7,11,11,11]', 162, 'Issue Till', '2016-04-26 07:04:32', 'Issue Till', 0, '0', '2016-04-26 07:38:32', '2016-04-26 07:38:32'), 
(541, 69, '[7,11,11,11]', 163, 'return Till', '2016-04-26 08:04:33', 'return Till', 0, '0', '2016-04-26 08:39:33', '2016-04-26 08:39:33'); 

は私の関数である。

public function getNotification($user_id =null, $gId=null) 
    { 
      if(is_array($gId)) { 

       $this->_data = self::select('*') 
        ->join('users', 'users.id', '=', 'n_user_id') 
        ->where('users.id','=', $user_id) 
        ->whereIn('n_group_code_id',$gId) 
        ->get(); 
       if (count($this->_data)) { 
        return $this->_data; 
       } else { 
        return false; 
       } 
      }else { 
       return false; 
      } 

    } 
+0

を使用してそれはあなたのデータベースは次のようになりますどのように依存していることを行うことができます。 1つのカラムに 'implode()'を使用していない場合は 'foreach() 'を使用してください – aldrin27

+0

この[7,11,11,11]フォーマットのようにデータを挿入するので、mysqlまたはLaravelでも可能ですか? –

+0

はい、可能です。 – aldrin27

答えて

6

それが可能だが、私はロードした後、それを車輪の再発明し、保存する前に、DB内json種類とencodeあなたの配列を使用してdecodeないように、あなたをお勧めしますDBから。

まず、列の種類をst​​ringからjsonに変更します(すべての情報を見つけるために最初のリンクをクリックします)。

$model = new Model(); 
.... 
$model->jsonData = json_encode($array); 
$model->save(); 

データを取得するには:データを保存するには

$model = Model::find($id); 
$array = json_decode($model->jsonData); 

また、あなたは自動的にaccessors and mutators

+0

友人をコードする方法 –

+0

私はそれをJsonとして挿入するとどうすればそのデータで選択できますか –

+1

サンプルコードで私の答えを更新しました。 –

関連する問題