2014-12-29 7 views
0

어떤 결과를 반환하지는 Web2py 쿼리 내가 Web2py 2 개 테이블이

  • auth_user
  • customer
  • (I는이 테이블을 정의) (표준 테이블) 항목이 고객이 사용을위한 구성되어

양식의 경우 auth_user 테이블에서 id이라는 현재 로그인 한 사용자를 사용하여 company_id 필드의 customer 테이블에 값이 저장됩니다. 이것은 auth.user_id을 통해 이루어집니다.

이제 현재 로그인 한 사용자의 auth.user_id을 사용하여 customer 테이블을 쿼리하여 현재 로그인 한 사용자가 만든 모든 항목을 가져 오려고합니다.

내가보기에이

def viewcustomers(): 

    rows = db.customer(db.customer.company_id == auth.user_id) 
    print rows 

를하고있는 중이 야, 내가

{{=viewcustomers}} 

이 내가 얻고있는 유일한 결과는 '없음'입니다.

무슨 일이 일어나는 지 아십니까?

답변

0

왜 컨트롤러의 viewcustomers() 함수는 'viewcustomers'를 키로 사용하여 사전을 반환하지 않습니까? 현재 고객을 기반으로 DB 쿼리를 수행하는 경우

def viewcustomers(): 

    rows = db.customer(db.customer.company_id == auth.user_id).select() 
    return dict(viewcustomers = rows) # or whatever instead of 'rows' 

또한, 그 대신 auth.user_id의, session.auth.user.id해야 하는가?

EDIT : 아래의 대화에 이어 '.select()'가 추가되었습니다.

+0

return dict (viewcustomers = rows) 행을 추가하면 제대로 작동하는 것 같습니다. 훌륭한. 그러나 테이블에 더 많은 것이 있으면 오직 하나의 결과 만 리턴합니다. @ 보아, 하나 이상의 결과를 표시하는 방법을 알고 있습니까? – user2073336

+0

@ user2073336 - 위의 'rows = ...'행을 "rows = db.customer (db.customer.company_id == auth.user_id) .select()"로 바꿔보십시오. – Boa

+0

참고로,'auth.user_id'는'session.auth.user.id'와 같습니다. (예외는 일어나지 않고'session.auth.user.id'가없는 경우에 단순히'None'을 반환합니다.). – Anthony

0

HTML 출력을 생성하기 위해 print을 사용하지 마십시오. print 명령은 단순히 콘솔에 인쇄합니다. 뷰가 실행 되려면 함수가 사전을 반환해야합니다. 즉, 함수가 아무 것도 반환하지 않기 때문에 브라우저에 "없음"이 표시됩니다.

또한 db.mytable(query) 구문은 처음으로 일치하는 레코드 만 반환합니다. 모든 레코드를 원할 경우 db(query).select() 구문을 사용해야합니다.

그래서, 당신의 기능은 다음과 같아야합니다

def viewcustomers(): 
    rows = db(db.customer.company_id == auth.user_id).select() 
    return dict(viewcustomers=rows) 

참고, 당신은 당신이보기에 Rows 개체를 삽입하는 경우, 그것은 기본적으로 SQLTABLE를 통해 표시됩니다.