Как использовать динамическое, где условие в красноречивом Laravel? - PullRequest
0 голосов
/ 15 мая 2018

Мой рабочий код:

$query = DB::table('order');

    $fromorderdate = $request->get('fromorderdate') or "";
    $toorderdate = $request->get('toorderdate') or "";
    $fromdeliverydate = $request->get('fromdeliverydate') or "";
    $todeliverydate = $request->get('todeliverydate') or "";
    $orderstatus = $request->get('orderstatus') or "";
    $ordertype = $request->get('ordertype') or "";

    if (Input::get('weightrange')) {
        $weightrangearray = explode('.', Input::get('weightrange'));
        $weightrange1 = $weightrangearray[0];
        $weightrange2 = $weightrangearray[1];
    }

    if ($fromorderdate != "" && $toorderdate != "") {

        $query->whereBetween('orderdate', [$fromorderdate, $toorderdate]);
        $makequery = true;

    }
    if ($fromdeliverydate && $todeliverydate) {
        $query->whereBetween('orderdate', [$fromdeliverydate, $todeliverydate]);
        $makequery = true;

    }

    if ($fromdeliverydate && $todeliverydate) {
        $query->whereBetween('orderdate', [$weightrange1, $weightrange2]);
        $makequery = true;

    }
    if ($orderstatus) {
        $query->where('orderstatus', $orderstatus);
        $makequery = true;

    }
    if ($ordertype) {
        $query->where('ordertype', $ordertype);
        $makequery = true;

    }


        echo $query->toSql();
    if ($makequery) {
        $order = $query->get();
    }

Этот код работает нормально, но точная проблема в том, что я не могу использовать красноречивые отношения с этой переменной $order.

Что я пытался $query=new Order();// order is my model name но sql запрос не работает должным образом.

есть ли способ, чтобы я мог преобразовать этот экземпляр $order db в eloquent, чтобы я мог использовать мои отношения в поле зрения.

1 Ответ

0 голосов
/ 15 мая 2018

Использование when($condition, callback):

$orders = Order::when($request->has('fromorderdate') && $request->has('toorderdate'), function ($q) use ($request) {
    return $q->whereBetween('orderdate', [$request->fromorderdate, $request->toorderdate]);
})
->when...
->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...