2016-09-21 6 views
0

두 가지 모델이 있습니다 : 항목 및 질문. belongsToMany에 올바르게 생성 된 조인 테이블 item_faq (둘 다의 단수)이 서로 있습니다. 내 조인 테이블에 주문을위한 추가 필드가 있습니다.Laravel 5.0() 검색어로 웅변을 주문하는 법

필자의 견해로는 모든 faq을 얻었고 피벗 테이블 레코드가있는 경우 체크 상자에 "checked"를 출력합니다. 나는 또한 체크 박스 목록에 드래그 앤 드롭 순서를 지정하고 잘 작동한다.

몇 가지 코드 노트 :

// ITEMS MODEL 
public function faqs(){ 
     return $this->belongsToMany('App\Faq'); 
    } 

// FAQ MODEL 
public function items(){ 
    return $this->belongsToMany('App\Item'); 
} 

public function hasItem($item) { 
    $items = $this->items->lists('id'); 
    return in_array($item, $items); 
} 

스키마의 테이블 조인

  • faq_id
  • 위해
  • 을 ITEM_ID

    • 는 타임 스탬프

    제 문제는 FAQ가 피봇 테이블의 주문 열에 따라 정렬되지 않는다는 것입니다.

    것은 내가 아주 간단한을 사용하고 있습니다 :

    $faqs = \App\Faq::with('items')->get(); 
    

    자주 묻는 질문의 검색이 모든 질문의를 받고에서 작동하고이 관련되는 경우,이 체크 박스를 확인하십시오.

    가입 테이블의 주문 열에 어떻게 주문할 수 있습니까?

  • 답변

    0

    Eager Load Constraints을 살펴보고 으로 생각하여 해결책을 찾는데 도움이 될 것입니다. 문서에서 :

    물론 열심히로드 클로저는 "제약 조건"으로 제한되지 않습니다. 또한 명령을 적용 할 수 있습니다 :

    $users = User::with(['posts' => function($query) { 
    
        $query->orderBy('created_at', 'desc'); 
    
    }])->get(); 
    
    +0

    나는 그것을 시도했지만 항목의 순서는 변경되지 않습니다. orderBy 필드를 찾을 수없는 경우 주문이 일종의 기본값으로 되돌릴 수 있습니까? item_faq.order를 참조하거나 주문해야합니까? –

    +0

    제공된 'FAQ 모델'을 보면,'items' 관계가 정의되어 있지 않습니다. 거기에 있고 위에 제공되지 않았습니까? 기본 동작에 관해서는, 나는'id '로 정렬한다고 생각합니다. 클로저가'items' join에 묶여 있기 때문에'item_faq.order'가 바뀔 것이라고 생각하지 않습니다. – camelCase

    +0

    사과드립니다. 코드 일부를 잘못 표시했습니다. Items 관계는 위에 정의되어 있습니다 (지금). 기본적으로 orderBy는 내가 이해하지 못하는 순서에 영향을 미치지 않는 것 같습니다. –

    관련 문제