2014-09-04 1 views
2

문제는 다음과 같다 모델 : 나는 여러 관계를 가지고포트 StdClass 데이터

1) 나는 데이터베이스에 몇 테이블에서 수백만 개의 행이 있으므로 설득력을 사용하는 것은 효율적이지 않습니다. 이 경우의 솔루션은 사용자 정의 DB :: raw() 선택 및 조인을 작성하여 효율적으로 작업을 완료하는 것입니다. 알 수 있듯이 StdClass를 반환합니다.

2) 필자는 사용하기에 상당히 긴 방법을 사용하는 4-5 개의 모델을 가지고 있으므로 최상의 솔루션은 StdClass의 각 행에 대해 해당 모델의 인스턴스를 만든 다음 해당 방법을 사용하는 것입니다.

StdClass의 정보를 OOP 패턴과 관련하여 모델로 '포팅'하는 것으로 알려진 '모범 사례'가 있습니까? 어떻게이 문제를 해결할 수 있겠습니까? 나는 어떤 제안도 할 것이고, 심지어 코드를 재구성 할 준비가되어있다.

P. Laravel v4.2

답변

4

이와 비슷한 기능이 작동합니다. 다만 당신의 필요에 맞게 조정 :

public function newFromStd(stdClass $std) 
{ 
    // backup fillable 
    $fillable = $this->getFillable(); 

    // set id and other fields you want to be filled 
    $this->fillable(['id', ... ]); 

    // fill $this->attributes array 
    $this->fill((array) $std); 

    // fill $this->original array 
    $this->syncOriginal(); 

    $this->exists = true; 

    // restore fillable 
    $this->fillable($fillable); 

    return $this; 
} 

가 다음 :

$user = with(new User)->newFromStd(DB::table('users')->first()); 

// or make it static if you like: 
$user = User::newFromStd(DB::table('users')->first()); 
+1

브릴리언트를 예를 들어 할 수있는, 그것을 시도 할 것입니다! –