2013-04-07 4 views
5

내 애플리케이션은 비즈니스 용 웹 사이트를위한 CMS입니다.키/값 쌍 유형 테이블에 대한 우수 사례 우수

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라는 테이블은 다음과 같습니다있다. 내가 좋아하는 뭔가를 할 수 있도록하고 싶습니다 : 이것은 내가 지금까지 무엇을 가지고

$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 마법 방법을 무시하십시오. 기본적으로, 당신은이 특정 모델에 대해이 메소드를 보길 원할 것입니다. 당신이 $business_info->zip = "12345"; 모든 비즈니스 정보를 얻기에 관해서는

뭔가를 할 때 각각의 값으로 fieldvalue 열을 설정

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

, 당신은 정말 그냥 데이터의 배열을 반환 하시겠습니까? 아마 그 일을하기위한 새로운 방법을 만들고 그 모든 것을 그대로 남겨 둘 것입니다. 하지만 네가 가진 것은 나에게 잘 생겼어.

+1

laravel 5에서 'BadMethodCallException'예외가 발생했습니다. '정의되지 않은 메소드를 호출하면 \ Database \ Query \ Builder :: set_attribute()가 표시됩니다. Laravel 5와 관련이 있습니까? Laravel 5에서이 작업을 수행하는 방법이 아닌 경우 어떻게해야합니까? –