2013-04-07 7 views
5

मेरा एप्लिकेशन व्यवसायों के लिए वेबसाइटों के लिए एक सीएमएस है। मैं इस तरह दिखता है एक तालिका business_info कहा जाता है:कुंजी/मूल्य जोड़ी प्रकार तालिका के लिए सबसे अच्छा अभ्यास

id | field   | value 
----------------------------------------- 
1 | name   | Testing Company 
2 | official name | Testing Company LLC 
3 | main_location | The Bay Area 
4 | year   | 1999 
5 | address  | 55 Street Rd 
6 | suite   | Unit 5 
7 | city   | Anytown 
8 | state   | CA 
9 | zip   | 55555 
10 | tollfree  | 1(888) 555-5555 

मुझे नहीं लगता कि वर्तमान सुवक्ता मॉडल कुशलता से इस जानकारी का प्रबंधन करने के लिए काम करेंगे, इसलिए मैं इसे बढ़ाया और एक अधिक उपयोगी मॉडल पर काम करना शुरू किया। मैं की तरह कुछ करने में सक्षम होना चाहते हैं: यह क्या मैं अब तक किया है

$business_info->zip = "66666"; 
$business_info->save(); 

, लेकिन मुझे यकीन है कि कैसे आगे बढ़ना नहीं कर रहा हूँ:

class Business_Info extends Eloquent 
{ 
    public static $table = 'business_info'; 

    public static function all() 
    { 
     $business_info_rows = with(new static)->query()->get(); 
     foreach ($business_info_rows as $business_info_row) 
     { 
      $business_info[$business_info_row->attributes['field']] = $business_info_row->attributes['value']; 
     } 
     return $business_info; 
    } 

    public function __set($key, $value) 
    { 

    } 
} 

संभवतः किसी ने कुछ सलाह दे सकता है कैसे आगे बढ़ना है या शायद एक और दृष्टिकोण? धन्यवाद!

उत्तर

2

आप सही रास्ते पर हैं, खासकर __set जादू विधि को ओवरराइड करने के साथ। असल में, आप इस विशिष्ट मॉडल के लिए ऐसा कुछ दिखाना चाहते हैं।

public function __set($key, $value) 
{ 
    $this->set_attribute('field', $key); 
    $this->set_attribute('value', $value); 
} 

कि उनके संबंधित मूल्यों को field और value कॉलम सेट जब आप $business_info->zip = "12345";

सभी व्यवसाय जानकारी प्राप्त करने के लिए के रूप में की तरह कुछ करते हैं, आप वास्तव में सिर्फ डेटा की एक सरणी वापस जाने के लिए करना चाहते हैं? मैं शायद ऐसा करने के लिए एक नई विधि बनाउंगा और जैसा भी है उतना छोड़ दूंगा। लेकिन जो आपने पाया है वह मेरे लिए अच्छा लग रहा है।

+1

लार्वेल 5 में मुझे 'BadMethodCallException' अपवाद मिलता है, 'अपरिभाषित विधि को कॉल करें \ डेटाबेस \ क्वेरी \ बिल्डर :: set_attribute()'। लार्वेल 5 के लिए यह रिलीज है। अगर लार्वेल 5 में ऐसा नहीं किया जाए तो? –

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