Таблицы данных Laravel о фильтрации дают мне другой результат - PullRequest
0 голосов
/ 18 октября 2018

при выполнении этого примера sql запросов на терминале

        SELECT users.name as cutomersName, gifts.shipment_id AS shipmentID, fulfillments.id AS fulfillmentId, subscriptions.id AS subscriptionId FROM gifts
        INNER JOIN shipments on shipments.id = gifts.shipment_id
        INNER JOIN fulfillments ON fulfillments.id = shipments.fulfillment_id
        INNER JOIN subscriptions ON subscriptions.id = fulfillments.subscription_id
        INNER JOIN users ON users.id = subscriptions.user_id
        WHERE gifts.shipment_id = 11

Я получил этот результат enter image description here

Это всего лишь пример, который намеревается сделать для фильтрации, это означает, что это WHERE gifts.shipment_id = 11 условие должно быть динамическим.как показано на этом рисунке.

enter image description here

Когда я выбрал All gifts subscriptions, он должен вернуть Graham Barry строку, и это может быть много.

Вот мой класс с данными.

<?php

namespace <path_to>\Subscriptions\DataTables;

use Carbon\Carbon;
use <path_to>\DataTables\BaseDataTable;
use <path_to>\Modules\Subscriptions\Facades\Products;
use <path_to>\Modules\Subscriptions\Models\Subscription;
use <path_to>\Subscriptions\Transformers\SubscriptionTransformer;
use Yajra\DataTables\EloquentDataTable;

class SubscriptionsDataTable extends BaseDataTable
{
    /**
     * @var
     */
    private $search_val;
    private $_filters;

    public function __construct()
    {
        $this->search_val = strip_left_zero($this->request()->search['value']);
        parse_str($this->request->filters, $this->_filters);
    }

    /**
     * Get query source of dataTable.
     * @param Subscription $model
     * @return \Illuminate\Database\Eloquent\Builder|static
     */
    public function query(Subscription $model)
    {
        if ($this->_filters['gifting'] == '1') {
            $model = $model->join('shipments', 'shipments.id', '=', 'gifts.shipment_id')
                ->join('fulfillments', 'fulfillments.id', '=', 'shipments.fulfillment_id')
                ->join('subscriptions', 'subscriptions.id', '=', 'fulfillments.subscription_id')
                ->join('users', 'users.id', '=', 'subscriptions.user_id');
            /*
            # this is just example of table fields but not the actual
            SELECT users.name as cutomersName, gifts.shipment_id AS shipmentID, fulfillments.id AS fulfillmentId, subscriptions.id AS subscriptionId FROM gifts
            INNER JOIN shipments on shipments.id = gifts.shipment_id
            INNER JOIN fulfillments ON fulfillments.id = shipments.fulfillment_id
            INNER JOIN subscriptions ON subscriptions.id = fulfillments.subscription_id
            INNER JOIN users ON users.id = subscriptions.user_id
            WHERE gifts.shipment_id = 11
             */
        }

        return $model->with('plan')->with('user')->newQuery();
    }

    /**
     * Get columns.
     *
     * @return array
     */
    protected function getColumns()
    {
        return [
            'id'           => ['title' => 'ID','visible'  => false],
            'user_id'      => ['title' => 'Customer', 'name' => 'user.name'],
            'product_id'   => ['title' => 'Product', 'searchable' => false],
            'revenue'      => ['title' => 'Revenue', 'searchable' => false],
            'sub_id'       => ['title' => 'Sub ID', 'searchable' => false],
            'created_at'   => ['title' => 'Sign-up Date'],
            'renewal_date' => ['title' => 'Renewal Date', 'searchable'    => false],
            'plan_id'      => ['title' => 'Term', 'searchable' => false],
            'active'       => ['title' => 'Status', 'searchable' => false],
            'imported'     => ['title' => 'Is Imported', 'name'=> 'user.fk_cratejoy_customers_id'],
        ];
    }
}

Я выполняю SQL-запрос выше для метода query().

Но этот код дает мне другие результаты.

Можете ли вы дать мне совет или решение по моей проблеме?

Это Laravel, и я использую пакет отсюда https://github.com/yajra/laravel-datatables

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...