2016-09-10 2 views
0

내 ORM으로 책꽂이를 사용하여 상점에 대한 API를 만들려고 노력 중입니다. 편안하게하기 위해서 나는 내 길을 이와 같이 보길 원합니다. '/ mens/jackets' 내 데이터는 이와 관련하여 카테고리 (남성/여성)를 찾아야 만 관련 섹션 (자켓, 청바지, 모자 등)을 얻을 수 있습니다. 그런 다음 관련 제품을 구할 수 있습니다. 그 부분. 데이터에는 자켓 이름이있는 2 개의 섹션 행이 있지만 하나는 카테고리를 1 (메이크)에 연결하고 fk는 2 (여성)로 연결하는 것과 같습니다.책장에 여러 개의 결합 js

설명서에서이 문제가 발견되었지만 첫 번째 관련 항목이 단일 항목을 반환하고 내 카테고리에 많은 섹션이있는 경우에만 관련 체인 만 연결할 수 있습니다 (추측).

new Photo({id: 1}).fetch({ 
    withRelated: ['account'] 
    }).then(function(photo) { 
    if (photo) { 
    var account = photo.related('account'); 
    if (account.id) { 
    return account.related('trips').fetch(); 
    } 
} 
    }); 

원시 SQL에서 내 쿼리는 어떤 도움도 대단히 감사하겠습니다이

SELECT * FROM sections 
JOIN categories ON categories.id = sections.category_id 
JOIN products ON products.section_id = sections.id 
where categories.name = 'mens' AND sections.name = 'jackets'; 

과 같을 것이다.

답변

0

섹션 모델을 만든 후에 이와 같은 쿼리를 사용할 수 있습니다. 당신이 juste .related('account').related('account').related('trips')가 null가 아닌 경우 나는 그것이 도움이되기를 바랍니다 그들에게

를 사용하기 전에 확인해야 이제

new Photo({id: 1}).fetch({ 
    withRelated: [ 
    { 'account': qb => qb.where(needed conditions) }, 
    'account.trips', 
    ] 
}).then(function(photo) { 
    YOUR CODE 
}); 

:) :

Sections.query(qb => { 
qb.leftJoin('categories', 'sections.category_id', 'categories.id); 
qb.leftJoin('products', 'sections.id', 'products.section_id); 
qb.where('categories.name', 'men'); 
qb.andWhere('sections.name', 'jackets'); 
}.fetchOne({withRelated: 'products'}); 
+0

안녕하세요. 도움을 제공해 주셔서 감사합니다. 불행히도 이것을 시도 할 때 fetchOne이 함수가 아니라는 오류가 발생합니다. 나는 당신의 코드를 문서와 비교하여 그들이 그렇게 해왔다는 것과 같은 방식으로 체크했다. –

+0

안녕하세요, fetchAll을 시도하는 것은 어떨까요? 또한 섹션 모델이 어떻게 보이는지 보여 줄 수 있습니까? – Rachel613

0

직접 같은 계정으로 여행을 가져올 수 있습니다