@Dmitry28PRo

Как сделать правильно запрос для вывода данных одного пользователя?

Здравствуйте. У меня есть БД и там есть таблицы Юзер и инвойс, я их связал, теперь когда я формирую инвойс всё ок, но я хочу формировать только инвойс человека возле которого нажал кнопку, а оно мне формирует инвойс только (ид 1 и данные человека ид 1). А у человека ид 2 и другие данные.
Вот контроллер:
public function invoiceView()
    {
        $this->user = Auth::User();
        $pdf = PDF::loadView('pdf.invoice', ['data' => User::where('id', $this->user->id)->get()], ['invoice' => Invoice::where('id', $this->user->id)->get()]);
        return $pdf->stream('invoice.pdf');
    }

Почему у меня выводит только первого пользователя? а не второго или 3-его.?
если немного запрос изменю то выведет правильно вот на такой 'data' => User::where('id', 2)->get() //то выведет пользователя 2
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
Sanes
@Sanes
Передайте id юзера и будет выдавать, которого запросите.
$this->user = Auth::User(); это текущий авторизованный пользователь.

public function invoiceView($id, $invoiceId)
    {    
        $pdf = PDF::loadView('pdf.invoice', ['data' => User::where('id', $id], ['invoice' => Invoice::where('id', $invoiceId)->first()]);
        return $pdf->stream('invoice.pdf');
    }

В шаблоне цикл не нужен. Примерно так.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Stalinko
PHP'шник и фрилансер до мозга костей
1. User::where('id', $this->user->id)->get() - какое-то масло масляное. Переменная $this->user уже содержит пользователя. Зачем его снова загружать из БД? Да ещё в виде коллекции.

2. Invoice::where('id', $this->user->id)->get() - у инвойсов ID совпадают с пользователями? Бред какой-то. Наверное, там должна быть колонка user_id

В итоге получаем следующее:

$pdf = PDF::loadView('pdf.invoice', ['user' => $this->user, 'invoice' => Invoice::where('user_id', $this->user->id)->first()]);


В шаблоне:

User ID: {{ $user->id }}<br>
Invoice {{ $invoice ? $invoice->id : 'n/a' }}


Опять же - почему инвойс один? В реальном мире должна быть коллекция инвойсов, либо последний инвойс.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы