Как я могу передать запрос от MySQL к Laravel? - PullRequest
0 голосов
/ 22 октября 2018

Мой запрос в mysql SELECT TIMESTAMPDIFF(YEAR,birthdate,CURDATE()) AS age FROM employe where month(birthdate)=month(NOW())

получить день рождения месяца плюс ваш возраст с даты рождения.

На языке:

public function index()

{

    {


     $bird = DB::table('employe')

    ->whereraw('TIMESTAMPDIFF(YEAR,birthdate,CURDATE()) AS age FROM employe where month(birthdate)=month(NOW())') 

    ->select('employe.*')

    ->get();
    return response()->json(
        $bird->toArray()
    );

ноэто выдает мне ошибку

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS edad FROM employe where month(birthdate)=month(NOW())' at line 1 (SQL: select `employe`.* from `employe` where TIMESTAMPDIFF(YEAR,birthdate,CURDATE()) AS age FROM employe where month(birthdate)=month(NOW()))

1 Ответ

0 голосов
/ 22 октября 2018
  1. Поскольку у вас есть $bird = DB::table('employe'), построитель запросов уже знает, какую таблицу выбрать FROM, поэтому вам не нужны FROM employe и ->select('employe.*')

  2. TIMESTAMPDIFF(YEAR,birthdate,CURDATE()) AS age oart вашего запроса не имеет ничего общего с предложением WHERE.Нам нужно переместить эту область в SELECT секцию запроса.

    $bird = DB::table('employe')
        ->select(DB::raw('*, TIMESTAMPDIFF(YEAR,birthdate,CURDATE()) AS age') 
        ->whereraw('MONTH(birthdate)=MONTH(NOW())')
        ->get();
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...