Laravel - Как добавить DB :: raw с определенным предложением Where в существующий запрос - PullRequest
0 голосов
/ 06 июня 2019

Я хочу добавить DB :: raw () с конкретным предложением where к существующему запросу.

У меня есть этот запрос:

    protected static $type = 
    [
        'daily' => 1,
        'weekly' => 2,
        'montly' => 3,
    ];

    $revenuedetails = DB::table("users")
        ->select("users.username", "users.email",DB::raw("DATE(users.created_at) as subscription_date"))
        ->where('users.plan', self::$type[$plan] ?? null);

Но я хочу добавить это:

DB::raw("DATE(users.created_at) as expired_date"))
where('users.plan_status', 0)

Это должно быть сразу же рядом

DB :: raw ("DATE ​​(users.created_at) как subscription_date"))

Следовательно, структура теперь будет

имя пользователя | электронная почта | subscription_date | EXPIRED_DATE

Я хочу добавить

DB :: raw ("DATE ​​(users.created_at) as expired_date"))

со своим конкретным пунктом where

где ('users.plan_status', 0)

к существующему запросу.

Обратите внимание, что

где ('users.plan', self :: $ type [$ plan] ?? null)

- это общее предложение where.

Тогда конечный результат должен быть

имя пользователя | электронная почта | subscription_date | EXPIRED_DATE

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Если я вас правильно понимаю, если статус плана = 0, то вы хотите использовать дату create_at в качестве даты истечения срока действия?Если нет, тогда expired_date должен быть нулевым?

Если это так, вы можете выполнить это с помощью оператора case, например: ...

DB::raw(" CASE WHEN users.plan_status = 0 THEN DATE(users.created_at) ELSE null END AS expired_date ")
0 голосов
/ 06 июня 2019

Привет. Если я правильно понял, вы хотите использовать псевдоним где в созданном вами месте, чтобы вы могли использовать вместо «where ()» следующее:

$revenuedetails = DB::table("users")
    ->select("users.username", "users.email",DB::raw("DATE(users.created_at) as subscription_date"), DB::raw("DATE(users.created_at) as expired_date"))
    ->having("subscription_date", "operador", "Value_condition")
    ->having("expired_date", "operador", "Value_condition")
    ->where('users.plan', self::$type[$plan] ?? null);

Также вы можете проверить ниже ссылку:

Можете ли вы использовать псевдоним в предложении WHERE в MySQL?

Я надеюсь, что помог тебе

Привет

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