向查询添加排除项。 Laravel 4

时间:2017-04-22 04:03:46

标签: php mysql laravel-4

我试图排除查询。

共有4个表:

  • Published_books
  • Parameters_values
  • 装运
  • 订单

现在,在第一个查询中,我要使用参数值&#34来询问具有列(plaza_type)的出版物;最佳"

但是,我也想要,从第一个查询中排除:已购买的出版物(第二个查询)。但购买的出版物是指创建货件(表格)并创建订单(表格)并且状态为"有效","部分","已发送&# 34;,"收到"。

我有两个数组:

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

有任何帮助吗?我想从第一个中排除第二个结果,以便只显示可以购买的出版物。

1 个答案:

答案 0 :(得分:0)

解决方案在查询中添加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);
    });

$ publication在模型BookPublication中定义, can_be_bought 在定义的方法中定义。

相关问题