2017-10-17 92 views
1

我有2個模型,隊列和動作。獲取充滿條件的最後一個元素

隊列有很多的動作,這些動作可以被掛起,重定向,成品等

我添加了定隊列已採取的每一個動作一個動作。

因此,一旦添加隊列對象,第一個操作就是'待定'。

我需要檢索,他們的最後一個動作是PENDING(STATUS_ID = 1)或重定向(STATUS_ID = 5)

我的表看起來像這樣

qms_queue ID

qms_actions隊列 ID STATUS_ID queue_id

我的做法是這樣的:

$queue_query->whereHas('actions', function ($query) { 
      $query->where('id', function ($query2) { 
       $query2->from('qms_actions') 
        ->select('id') 
        ->orderBy('created_at', 'desc') 
        ->limit(1); 
      }); 
     })->whereIn('status_id', [1,5]); 

但是由於我檢索的status_id是1或5,但不是給定隊列的最後一個,因此每個隊列都會返回。

我無法弄清楚如何在雄辯中做到這一點。有人可以幫我在這裏嗎?

回答

1

試試這樣的,如果它是確定以加載具有不想要的動作隊列:

$queue_query->with('actions', function ($query) { 
      $query->whereIn('status_id', [1,5]); 
      $query->orderBy('created_at', 'desc'); 
      $query->limit(1); 
     }); 

試試這個:

$queues = $queue_query->whereHas('actions', function ($query) { 
      $query->where('id', function ($query2) { 
       $query2->from('qms_actions') 
        ->select('id') 
        ->orderBy('created_at', 'desc') 
        ->whereIn('status_id', [1,5]); 
        ->limit(1); 
      }); 
     })->get(); 

,你可以得到類似的動作即:

foreach ($queues as $queue) { 
    //$queue->actions->first(); 
} 
+0

感謝您的回覆,不完全是,我必須fetc哈列表的最後一個行動嚴格是1或5之一的隊列。 –

+0

檢查我的更新:) – Maraboc

+0

很酷,這幾乎是我的解決方案,但測試第二個子查詢它只是返回絕對的最後一個動作,而不是每個隊列的最後一個動作:S –

相關問題