0

私はgrailsに取り組んでおり、レイアウトビューで他の(連絡先)コントローラーと多くの関係を持つコントローラー(私の場合はcontactGroup)のデータをどのように取得できるかという問題に直面しています。以下は私のドメインクラスコードです...

class Contact {
    String number
    String name

    ...

    static hasMany = [groups: ContactGroup, messages: Message]
    static belongsTo = [Message, ContactGroup]
}

class ContactGroup {
String groupName
String description

...

static hasMany = [contacts: Contact, messages: Message]
}

以下は、括弧で囲まれた連絡先の数ですべてのグループを取得するための私のレイアウトビューコードです... Gmailが連絡先とグループのリストを表示するのと同じように。

 <h4>Contacts</h4>
    <g:link controller="contact" action="list" class="active"><h5>All (${smsserver.Contact?.list().size()})</h5></g:link>
    <g:layoutBody/>
    <g:each in="${smsserver.ContactGroup}" var="c">
        <g:link controller="contact" action="list">${c.findAll()}<br></g:link>
    </g:each>

私を助けてください。

4

1 に答える 1

0

m:n の関係があります。これは、1 つの連絡先に多くのグループがあり、各グループに多くの連絡先があることを意味します。私は正しいですか?そして、特定の連絡先のグループからすべてのグループとすべての連絡先を表示したいと考えています。わかった。

  1. 特定の連絡先のすべてのグループを取得します。

    ${contact.groups} <%-- グループのリスト --%>

またはより適した

<ul>
<g:each in="${contact.groups}" var="group">
    <li>
        ${group.groupName} (${group.contacts.size()})
    </li>
</g:each>
</ul>

特定の連絡先のすべてのグループと連絡先を表示する

<ul>
<g:each in="${contact.groups}" var="group">
    <li>
        <b>${group.groupName}</b> (${group.contacts.size()})
        <ul>
        <g:each in="${group.contacts}" var="c">
            <li>
                ${c.name}
            </li>
        </g:each>
        </ul>
    </li>
</g:each>
</ul>

あなたのコントローラー:

class ContactController {

    def show(long id) {
        def contact = Contact.get(id)
        ['contact': contact]
        // or
        // render view:'YourPage', model:['contact': contact]
    }
}

詳細についてはhttp://grails.org/doc/latest/guide/theWebLayer.html#controllers

于 2013-08-06T09:26:06.903 に答える