2016-04-28 7 views
0

私は製品のレビューサイトを開発しています。私は製品に関連するすべてのレビューを表示するのに苦労しています。Web2py商品レビューサイト。参照されたデータベースの結果を表示するには?

私が本当に欲しいのは、products.id = reviews.prodIdがどこにあるのかを伝えることができるWHERE句です。すべての結果を表示しますが、これを行う方法がわかりました。

レビューが行われると、製品IDが入力されます。レビューは、私はそれが正しいかどうかを確認していないものの、製品データベースへの参照値を持つレビューデータベースに格納されています。

db.define_table('reviews', 
      Field('id',requires=IS_NOT_EMPTY()), #auto number 
      Field('prodId',db.products.id,requires=IS_NOT_EMPTY()), #referenced id 
      Field('title',requires=IS_NOT_EMPTY()), # title of the review 
      Field('body', 'text',requires=IS_NOT_EMPTY()), # review 
      Field('time_stamp','datetime'), # timestamp w/date 
      primarykey=['id'], 
      migrate=False) 

default.py:

def show(): 
reviews = db.reviews(request.args(0)) 
products = db.products(request.args(0)) 
return locals() 

show.html

{{extend 'layout.html'}} 

{{for row in db(db.reviews.prodId == 1).select():}} 
<h2> 
{{=reviews.title}} for {{=products.name}} 
</h2> 
<i>Posted on {{=reviews.time_stamp}} by (persons name)</i> 
<p> 
<b> 
{{=reviews.body}} 
</b> 
</p> 
{{pass}} 

ありがとう、ジェレミー。

答えて

0

recursive selectを使用して、あなたが行うことができます:上記

def show(): 
    product = db.products(request.args(0)) 
    reviews = product.reviews.select() 
    return locals() 

product.reviews.select()db(db.reviews.prodId == product.id).select()と同等です。ビューで

、あなたがしなければなりません:

def show(): 
    rows = db((db.products.id == request.args(0)) & 
       (db.reviews.prodId == db.products.id)).select() 
    return locals() 

次にビューで:

{{for review in reviews:}} 
<h2>{{=review.title}} for {{=product.name}}</h2> 
<i>Posted on {{=review.time_stamp}} by (persons name)</i> 
<p> 
<b> 
{{=review.body}} 
</b> 
</p> 
{{pass}} 

別のオプションはjoinを行うことであろう

{{for row in rows:}} 
<h2>{{=row.reviews.title}} for {{=row.products.name}}</h2> 
<i>Posted on {{=row.reviews.time_stamp}} by (persons name)</i> 
<p> 
<b> 
{{=row.reviews.body}} 
</b> 
</p> 
{{pass}} 
関連する問題