2017-11-06 6 views
1

나는 다음과 같은 모델을 가지고있다. 같은where 절에서 연산자를 include와 함께 사용하는 방법은 무엇입니까?</p> <pre><code>AuthorModel.hasMany(BookModel); BookModel.belongsTo(AuthorModel); </code></pre> <p>내가 그의 이름이나 그의 책 중 하나의 제목을 검색 문자열과 일치하는 저자을 선택합니다 :

뭔가 :

  Author.findOne({ 
       where: { 
        [Op.or]: [ 
         { name: 'test'}, 
         {'books.title':'test'} 
        ] 
       }, 
       include: [{ 
        model: Book 
       }] 
      }) 

내가하려고 무엇이든간에, 난 항상 끝낼 : Unknown column 'books.title' in 'where clause'

답변

1

당신은 당신의 include 내부의 where 절을 이동해야합니다.

Author.findOne({ 
    include: [{ 
    model: Book, 
    where: { 
     [Op.or]: [ 
     { '$author.name$': 'test'}, 
     { title: 'test'} 
     ] 
    }, 
    }] 
}) 
+0

감사합니다. 그러나 문제는 해결되었지만 작성자 열은 올바르게 해결되어야합니다. 또한 where 절이 어느 위치에 있어야 하는지를 설명 할 수 있습니다. 나를 위해, 그것은 여전히 ​​매우 혼란 스럽다. 예를 들어, 다른 방법으로 작업하고 저자를 포함한 책을 선택하는 경우, 대부분의 경우 포함 영역 내의 where 절은 쓸모가 없습니다. 그것은 include 외부에 위치해야하고 author 칼럼은 그 where 절 내에서 처리되어야한다. – henk