2016-04-26 9 views
5

मैं डेटाबेस में एक कॉलम में सरणी प्रकार की दुकान और जहां सरणी ($ GID) समारोह नीचे के रूप में के बीच n_group_code_id तुलना करने के लिए उपयोग करते हुए इसे वापस चयन करना चाहते हैं।डेटाबेस में सरणी मान को स्टोर करना और लैरवेल में कहां से उपयोग करना संभव है?

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

यह कैसे अपने डेटाबेस की तरह दिखाई देगा पर निर्भर करता है का उपयोग कर के साथ। यदि एक कॉलम में केवल 'implode() 'का उपयोग नहीं किया जाता है तो' foreach()' – aldrin27

+0

का उपयोग करें, मैं इस [7,11,11,11] प्रारूप जैसे डेटा डालता हूं, तो क्या यह mysql या Laravel में संभव है? –

+0

हां यह संभव है। – aldrin27

उत्तर

6

यह संभव है, लेकिन मैं आपको सलाह देते हैं लोड हो रहा है के बाद पहिया बदलने की नहीं और सहेजने से पहले डीबी में json प्रकार और encode अपने सरणी का उपयोग करें और decode यह डीबी से

सबसे पहले, स्ट्रिंग से जेसन तक अपना कॉलम प्रकार बदलें (सभी जानकारी ढूंढने के लिए पहले लिंक पर क्लिक करें)।

डेटा सहेजने के लिए:

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

डेटा पुनः प्राप्त करने के लिए:

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

इसके अलावा, आप जो स्वचालित रूप से कर सकता है accessors and mutators

+0

दोस्त को कैसे कोड करें –

+0

ताकि जब मैं इसे जेसन के रूप में डालूं तो मैं उस डेटा के साथ कैसे चयन कर सकता हूं –

+1

मैंने अपना उत्तर उदाहरण कोड के साथ अपडेट किया है। –

संबंधित मुद्दे

 संबंधित मुद्दे