2016-04-04 25 views
0

Bu işlemin sonucunu düzenli olarak toplanan bir koleksiyonda vermek istiyorum. Öncelikle, bunlar arasında bir ilişki olmadığı için bunun çirkinleşeceğini biliyorum. laravel5.1 İade edilen malların iadesi

Şimdi bir kullanıcı bir bilet oluşturdu diyelim ve bir destekçisi sonunda bilet kapanacak bu bilet ve kullanıcıya cevap verdi: İşte benim veritabanı tasarım. Bu bu entrysleri veritabanına dönüştürecektir.

->ticket_event (ticket opened by user X) 
->ticket_replie (first question made by user X) 
->ticket_replie (answer from supporter) 
->ticket_event (ticket closed by user X) 

Yanıtlar ve olaylar arasında doğrudan bir bağlantı yoktur, çünkü bunlar arasında mantıksal bir ilişki yoktur. "Created_at" kullanarak sipariş vermek işe yaramaz, çünkü zaman damgası aynı olur. Onlara sipariş vermeyi ve sipariş edilen koleksiyona geri dönmeyi çok çirkin bir çalışma yapacağım. İşte ben denedim zaten.

class ticketHelper 
    { 

    var $ticket_replies; 
    var $ticket_events; 

    function orderReplies() 
    { 
     $ticket_replies = $this->ticket_replies; 
     $ticket_events = $this->ticket_events; 

     $events_replies = $ticket_events->merge($ticket_replies)->sortByDesc('created_at'); 

     $filtered = $events_replies->sort(function($itemA, $itemB) 
     { 
     if($itemA->created_at == $itemB->created_at) 
     { 
      if(is_a($itemA,'ticket_event')) 
      { 
       return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 
      else 
      { 
       return (($itemA->created_at >= $itemB->created_at) && ($itemA->created_at <= $itemB->created_at)); 
      } 
     }); 
     return $filtered; 
     } 
    } 

Bazı anlamlı Uzman burada belki bu çözüldü almak için beni biraz yardım veren, bu yüzden bu sırada döndürülen koleksiyonu olsun: Ben doğru öğeleri arasındaki ilişki olduğunu anlamak

->ticket_event (ticket opened by user X) 
->ticket_replie (first question made by user X) 
->ticket_replie (answer from supporter) 
->ticket_event (ticket closed by user X) 

cevap

0

ticket_id.
İlişkisi: Bir Biletin bir çok etkinliği var.
İlişkisi: Bir Biletin çok sayıda Yanıtı var.
Veritabanınıza bir masa bileti eklemeniz gerekecektir.

+0

bu bilet tablosu zaten mevcut. Ticket_replies ve ticket_events arasında doğrudan bir ilişki yoktur. Sadece yukarıda açıklandığı gibi sipariş vermem gerekiyor, bu yüzden onları bir kullanıcıya doğru sırada gösterebiliyorum. –

+0

Eğer masa bileti zaten mevcutsa, neden bu iki tabloda bir bilet var? –

+0

ilişkilerini ilgili modellerde koyabilirsiniz –

İlgili konular