2017-04-22 8 views
0

私はクエリに除外しようとしています。クエリに除外を追加する。 Laravel 4

  • Published_books
  • Parameters_values
  • 出荷
  • 受注

最初のクエリでは、私は列を持つ出版物を求めている(plaza_type):

は、4つのテーブルがありますパラメータ値が「best」の場合

しかし、私も最初のクエリから除外したい:購入したパブリケーション(2番目のクエリ)。しかし、購入した出版物は、出荷(テーブル)が作成され、注文(テーブル)が作成され、ステータスが「有効」、「部分」、「送信済み」、「受信済み」のときである。

Iした2つの配列:

 $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); 
    }); 

2つ目

$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); 
    }); 

任意のヘルプ?買うことができる出版物だけを表示するために、最初のものの2番目のものから結果を除外したいと思います。

答えて

0

クエリでfilterを追加Solutionated:

$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されます。

関連する問題