2017-04-22 106 views
0

我想排除查詢。向查詢添加排除。 Laravel 4

有4個表:

  • Published_books
  • Parameters_values
  • 出貨量
  • 訂單

眼下在第一個查詢我問用柱出版物(plaza_type)參數值爲「最佳」

但是,我也想從第一個查詢中排除:購買的出版物(第二個查詢)。但是,購買的出版物是當貨物(表格)被創建並且訂單(表格)也被創建並且具有「有效」,「部分」,「發送」,「接收」狀態。

我有兩個數組:

 $eliteBooks = BookPublication::join('parameter_values', 'published_books.plaza_type', '=', 'parameter_values.id') 
    ->select('published_books.*') 
    ->where(function($query) use($then, $now) 
    { 
     $query->whereBetween('published_books.created_at', [$then, $now]) 
       ->where('parameter_values.pvalue', '=', 'best'); 
    }) 
    ->orderBy('published_books.created_at', 'desc')->take(12) 
    ->get()->chunk(6)->map(function($value) 
    { 
     return $value->chunk(3); 
    }); 

,第二個

$recentBoughtExchanged = BookPublication::join('shipments', 'published_books.id', '=', 'shipments.published_book_id') 
    ->join('orders', 'shipments.order_id', '=', 'orders.id') 
    ->join('parameter_values', 'orders.order_status', '=', 'parameter_values.id') 
    ->select('published_books.*') 
    ->where(function($query) use($then, $now) 
    { 
     $query->whereBetween('orders.created_at', [$then, $now]) 
       ->where('parameter_values.pvalue', '=', 'valid') 
       ->orWhere('parameter_values.pvalue', '=', 'partial') 
       ->orWhere('parameter_values.pvalue', '=', 'sent') 
       ->orWhere('parameter_values.pvalue', '=', 'received'); 
    }) 
    ->groupBy('published_books.id') 
    ->orderBy('orders.created_at', 'desc') 
    ->get()->chunk(6)->map(function($value) 
    { 
     return $value->chunk(3); 
    }); 

任何幫助嗎?我想排除第一個結果,以便只顯示可以購買的出版物。

回答

0

Solutionated將在查詢中filter

$eliteBooks = BookPublication::join('parameter_values', 'published_books.plaza_type', '=', 'parameter_values.id') 
    ->select('published_books.*') 
    ->where(function($query) use($then, $now) 
    { 
     $query->whereBetween('published_books.created_at', [$then, $now]) 
       ->where('parameter_values.pvalue', '=', 'best');   
    }) 
    ->orderBy('published_books.created_at', 'desc')->take(12) 
    ->get()->filter(function($publication) { 
     return $publication->can_be_bought; 
    })->chunk(6)->map(function($value) 
    { 
     return $value->chunk(3); 
    }); 

$出版物模型BookPublication定義,can_be_bought中定義過的方法。