#php #laravel #eloquent
#php #laravel #красноречивый
Вопрос:
Ниже приведен код, в котором я получаю соответствующие записи, объединяя 3 таблицы, а затем оператор ‘Select’ в конце извлекает определенные поля. Он работает отлично. Теперь я хочу добавить переменную ‘$userName’ в оператор ‘Select’, чтобы передавать ее с каждой записью для просмотра. также я хочу, чтобы ключ $userName был именем пользователя, а значение было динамическим.
вот код.
$fromDate = request('fromDate');
$toDate = request('toDate');
$user = auth()->user();
$userName = $user->name;
$records = $user->cases()
->join('myrequests', 'mycases.id', 'myrequests.mycase_id')
->whereDate('myrequests.created_at', '>=', $fromDate)
->whereDate('myrequests.created_at', '<=', $toDate)
->select(
'mycases.*',
'myrequests.number',
'myrequests.created_at',
'myrequests.requested',
**here I want the '$userName'**
)->get();
Я пробовал 'username' => $userName
и {{$userName}}
но это не работает.
Ответ №1:
вы должны получить все элементы из базы данных, а затем выполнить итерацию по ним:
$records= ....
foreach ($records as $key => $item) {
$item->username= $userName;
}
Ответ №2:
Я предполагаю, что вы хотите, чтобы строка $userName
возвращалась как столбец ‘username’. Если это так, добавьте selectRaw .
$records = $user->cases()
->join('myrequests', 'mycases.id', 'myrequests.mycase_id')
->whereDate('myrequests.created_at', '>=', $fromDate)
->whereDate('myrequests.created_at', '<=', $toDate)
->select(
'mycases.*',
'myrequests.number',
'myrequests.created_at',
'myrequests.requested',
)
->selectRaw('"?" as username', [$userName])
->get();
Комментарии:
1. он возвращает ошибку «SQLSTATE [HY000]: Общая ошибка: индекс 25 столбцов вне диапазона»