2016-09-28 6 views
1

позволяет сказать, что у меня есть три таблицыКак показать данные на экране gsp из нескольких таблиц, имеющих общую ценность?

  • Рейсы
  • TripLegs
  • TripStates

, когда пользователь создает Trips запись, он необходим для создания TripLegs и TripStates, а также.

  • Экскурсии: ID, trip_number, trip_description
  • TripLegs: Идентификация, trip_id (это идентификатор каждого TRIPS пластинки), Load_type, stop_number
  • TripStates: Идентификация, trip_id (это идентификатор каждого TRIPS пластинки), state_name, stop_number

Так что мой вопрос на экране редактирования, как я могу получить данные из TripLegs и TripStates что, когда их trip_id равно идентификатору для Trips столбца.

def edit() { 
    def TripsInstance = Trips.get(params.id) 

    def tripId = new Integer(TripsInstance.id) Storing the TripInstanceID     
    def tripLegsInstance =  

    TripLegs.findByTripId(tripId?.toString().toInteger(), 
    [sort:'tripNumber']) 




    def tripStatesInstance = 
    TripStates.findByTripId(tripId?.toString().toInteger(), 
    [sort:'tripNumber']) 

хорошо мой код работает отлично, я могу получить данные из трех таблиц на экран редактирования, но я борюсь на методе обновления, как я могу получить новые экземпляры хранятся?

+0

вы написать запрос, который захватывает и связывает данные возвращают результаты в виде списка к вашему представлению - его пользовательский запрос, который требует пользовательских вызовов службы gsp-контроллера, а не то, что вы генерируете из CRUD – Vahid

+0

, точно, это невозможно сделать с помощью CRUD .. вы можете помочь мне с написанием запроса? – Syrianrevo

+0

, пожалуйста, разместите свой домен и код gsp. – elixir

ответ

0

Вы должны создать искатели для TripLegs и TripStates

Trips tripsInstance = Trips.get(params.id) 

//This criteria returns a list of tripLegs related with trip 
List tripLegs = TripLegs.findAllByTrips(tripsInstance) 

//This criteria returns a list of tripStates related with trip 
List tripStates = TripStates.findAllByTrips(tripsInstance) 

Теперь у вас есть путешествие, и их TripLegs и TripStates в два списка.

Возвращение их в GSP таким образом в вашем редактирования действия

[trip: tripsInstance, tripLegs: tripLegs, tripStates: tripStates] 

и вы можете показать информацию о вашей GSP с <g:each> для каждого списка.

<g:each in="${tripLegs}" var="tripLeg"/> 

Обратите внимание, что я предположил, что ваши классы являются чем-то вроде этого:

TripState{ 
    Trips trips //it is mapped as trip_id 
} 
+0

Спасибо за ваша помощь, я получил это работает :) – Syrianrevo

+0

Отлично! Добро пожаловать. Отметьте вопрос, как решить, если один из ответов вам помог, или дать вам собственный ответ. – quindimildev

1

Пожалуйста, добавьте модель предметной области и код ассоциации для:

  • Поездка
  • TripLegs
  • TripStates

основанные на вашем примере кода я могу предположить, как TripLegs и TripStates являются belongsTo Trip (s) и отношения один-ко-многим. если так что вы можете получить доступ к TripLegs и TripStates, запрашивая поездку по Id

Trip myTrip = Trip.get(id) 
myTrip.legs 
myTrip.states 

при добавлении модели предметной области и ассоциации код вы можете получить конкретную помощь

+0

absolutley, весь вопрос и даже исправленный ответ ниже quinmildev на самом деле является излишним, чтобы получить то, что уже имеет отношения, и просто нуждается в этом +1 для вас – Vahid

+0

Я получил его, спасибо за вашу помощь, ребята :) – Syrianrevo