2014-10-20 2 views
3

Laravel에 익숙하지 않아서 다 대 다 관계를 질의 할 수있었습니다. 여기서 'template_dynamic'은 'template'과 'dynamic'두 테이블의 피벗입니다. Many-to-Many 및 Eager 로딩 쿼리

// Template Model 
class Template extends Eloquent 
{ 
    protected $table = 'template'; 
    protected $guarded = array('template_id'); 
    protected $primaryKey = 'template_id'; 

    public function dynamic() 
    { 
     return $this->belongsToMany('dynamic', 'template_dynamic') 
      ->select('*') 
      ->withPivot('template_dynamic_id') 
      ->orderBy('template_dynamic_html_sort', 'ASC'); 
    } 

여기에 나는 내가 지금하고 싶은 것은 그 피벗 테이블이 일대 속성 'template_dynamic_option'는 기록

// Template Controller 
$dynamic_fields = Template::find($rec->template_id)->dynamic; 

를 검색 할 수 있었다. 레코드를 쿼리하고 $ dynamic_fields 변수와 어떻게 조합합니까?

// What I want to do is something like this. But sadly this is an invalid syntax 
$dynamic_fields = $dynamic_fields->with('template_dynamic_option'); 

모든 권장 사항 또는 개선 사항을 환영합니다.

미리 감사드립니다.

답변

0

먼저, 귀하의 관계 쿼리에 select('*')이 필요 없다고 확신합니다.

그러나 이제 실제 문제에 도착하자)

웅변에 피벗 테이블에 액세스하려면 아주 간단합니다.

$dynamic_fields = Template::find($rec->template_id)->dynamic; 

foreach($dynamic_fields as $dynamic){ 
    var_dump($dynamic->pivot) 
} 

기본적으로 피벗 테이블의 키만 개체에 있습니다. 변경하려면 withPivot()으로 정의해야합니다. 사실 당신이 벌써했던 것처럼 이드와 함께하지 않았습니다.

public function dynamic() 
{ 
    return $this->belongsToMany('dynamic', 'template_dynamic') 
     ->withPivot('template_dynamic_option') 
     ->orderBy('template_dynamic_html_sort', 'ASC'); 
} 

그리고 당신이 경우 여러 추가 열이 구문을 사용합니다

->withPivot('template_dynamic_option', 'foo', 'bar');