#laravel #eloquent
#laravel #eloquent
Вопрос:
Я использую Laravel Framework 6.16.0
.
Я хочу выбирать данные с помощью функций sql, таких как CONCAT('Q', QUARTER(transaction_date))
.
Однако я получаю сообщение об ошибке:
Column not found: 1054 Unknown column 'CONCAT('Q', QUARTER(transaction_date))' in 'field list'
Запрос выглядит следующим образом:
$days = 365 * 2; // two years
$trx = DB::connection('mysql_prod')->table('product')->select(array("transaction_date", "CONCAT('Q', QUARTER(transaction_date))", "YEAR(transaction_date)", "trx_type", "amount_range", "transaction_value", "symbol"))
->leftJoin('companies', 'product.companies_id', '=', 'companies.id')
->leftJoin('persons', 'persons.id', '=', 'product.persons_id')
->where('companies.symbol', '=', $s->symbol)
->where('persons.person_type', '=', 'manager')
->whereDate('transaction_date', '>=', Carbon::now()->subDays($days))
->orderBy('transaction_date', 'desc')
->get();
Есть предложения, как использовать SQL-функции в инструкции eloquent select?
Ценю ваш ответ!
Комментарии:
1. вам нужно будет использовать a
DB::raw
для содержимого CONCAT, поскольку он думает, что вы пытаетесь выбрать «столбцы» с помощьюselect
Ответ №1:
Как заявил @lagbox в своем комментарии,
Вы должны изменить "CONCAT('Q', QUARTER(transaction_date))"
на DB::raw("CONCAT('Q', QUARTER(transaction_date))")
$days = 365 * 2; // two years
$trx = DB::connection('mysql_prod')->table('product')->select(array("transaction_date", DB::raw("CONCAT('Q', QUARTER(transaction_date))"), "YEAR(transaction_date)", "trx_type", "amount_range", "transaction_value", "symbol"))
->leftJoin('companies', 'product.companies_id', '=', 'companies.id')
->leftJoin('persons', 'persons.id', '=', 'product.persons_id')
->where('companies.symbol', '=', $s->symbol)
->where('persons.person_type', '=', 'manager')
->whereDate('transaction_date', '>=', Carbon::now()->subDays($days))
->orderBy('transaction_date', 'desc')
->get();