【问题标题】:List values from database with foreignkey in grails在grails中使用外键列出数据库中的值
【发布时间】:2016-08-07 09:38:32
【问题描述】:

我正在使用 grails 3.1.10、spring 安全服务和 mysql。我有表:商店和产品。所以商店在我的桌子上有很多产品。 product_id 是 Shop 表中的 fk。在展示/索引页面上列出了所有商店。当单击商店名称时,它会引导您显示商店属性的商店/显示/ID。 (我将这个发送商店 id 发送到 url)我想要做的是显示属于这家商店的所有产品。 我在我的 shopController 中写了这个方法

def list = {
params.max = Math.min(params.max? params.int('max') : 20, 100)
Product product = Product.get(params.id) 
List districts = Shop.findAllByProduct(product)
[productList : districts,
 producttInstanceTotal: Product.count()]}

在我的商店/show.gsp 中是

<g:each in="${productList}" status="i" var="p" >
 <div class="col-lg-2 col-md-4 col-xs-6 thumb">
    <a class="thumbnail" href="#">
      <img class="img-rounded" src="http://placehold.it/400x300" alt="">
      </a>
        <div class='text-center'>
         <p><g:link controller="product" action="show"  params="[id:p.id]">
                ${fieldValue(bean: p, field: "productName")}
            </g:link></p>
          <p>${fieldValue(bean: p, field: "productName")}</p>
          <p>${fieldValue(bean: p, field: "productBarcode")}</p>
      </div>
    </div>
</g:each>

但没有显示。顺便说一句,我使用 generate-all 创建所有控制器和视图。感谢您的帮助

【问题讨论】:

  • 你有 def list = { 你应该把它改成 def list() { 它不渲染任何东西,而是将参数输出到它期望的控制器存在的 list.gsp 上姓名。然后您参考 myshop/show.gsp - show.gsp 将绑定到 def show() { } 而不是 def list - 查找 list.gsp 的内容以进行调试 - 同样在您的控制器中添加 println "-- 产品是$product" println "districts is $districts" 在每个元素下看看你是否击中它

标签: mysql grails spring-security


【解决方案1】:

我要做的是展示属于这家商店的所有产品。

在这种情况下,您应该将商店 ID 作为参数传递给并列出属于它的所有产品。您在上面发布的代码是传递产品 ID 并列出所有销售它的商店。

def list() {
  Shop shop = Shop.get(params.id) 
  List products = Product.findAllByShop(shop)
  [productList : products]      
}

请注意,该操作应声明为方法def list() {},而不是闭包def list = {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多