2017-02-21 2 views
0

Может кто-нибудь помочь мне, как преобразовать запрос SQL в Larvel 5.2Преобразование SQL-запроса в laravel 5.2?

Первый запрос (за текущий месяц)

SELECT 
    * 
FROM 
    customer_allocations 
WHERE 
    YEAR(date) = YEAR(NOW()) AND MONTH(date) = MONTH(NOW()); 

Второй запрос (для текущей недели)

SELECT 
    * 
FROM 
    customer_allocations 
WHERE 
    WEEKOFYEAR(date) = WEEKOFYEAR(NOW()); 

Третий запрос (на текущий день)

SELECT 
    * 
FROM 
    customer_allocations 
WHERE 
    YEAR(date) = YEAR(NOW()) AND 
    MONTH(date) = MONTH(NOW()) AND 
    DAY(date) = DAY(NOW()); 

Эти SQL-запросы выполняются успешно в phpmyadmin, но я хочу реализовать в laravel, кто-нибудь может мне помочь.

Я попытался преобразовать эти запросы, но я получаю сообщение об ошибке на этой строке кода:

CustomerAllocation::where([YEAR('date'),'=',YEAR(NOW()),MONTH('date'),'=', 
          MONTH(NOW())])->get(); 

Это ошибка:

Call to undefined function "App\Http\Controllers\YEAR()"

+0

Это должно быть 'whereYear',' whereMonth' ... Проверьте это [link] (https://laravel.com/api/5.0/Illuminate/Database/Query/Builder.html#method_whereYear) – Thamilan

+0

вы можете конвертировать любой один запрос в laravel – kunal

+0

Для вашего сценария, я думаю: 'CustomerAllocation :: whereDate ('date', '=', date ('Ym-d'));' будет делать – Thamilan

ответ

1

Изменить

CustomerAllocation::where([YEAR('date'),'=',YEAR(NOW()),MONTH('date'),'=',MONTH(NOW())])->get() 

до

CustomerAllocation::whereRaw("YEAR(date) = YEAR(NOW())")->whereRaw("MONTH(date) = MONTH(NOW())")->get() 

Используйте whereRaw(), где вы хотите поставить обычное условие проверки, как вы хотите.