@romentigo

Как получить данные из таблицы в Laravel?

Всем привет!
Имеется такой контроллер со следующим кодом:
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;

class LectViewController extends Controller
{
    public function index(){
        $lecturers = DB::table('Преподаватели')->select('id_Преподавателя', 'ФИО')->get();
        $id = $lecturers->with('id_Преподавателя')->get();
        $name = $lecturers->with('ФИО')->get();
        return view('account')
        ->with(compact('id'))
            ->with(compact('name'));
    }
}


Имеется таблица с информацией о преподавателях. В данном случае, я делаю запрос на получение таблицы с двумя столбцами: id_Преподавателя и ФИО. Всё работает прекрасно, но мне необходимо из массива $lecturers по отдельности взять столбцы и записать их в два других массива: $id и $name. Т.е. чтобы было 2 массива столбцов. Зачем? Нужно передать их в Vue компонент. Его код такой:
<template>
    <table class="ViewData">
        <thead>
            <tr>
                <th>ID</th>
                <th>ФИО</th>
            </tr>
        </thead>
        <tbody>
            <tr v-for="info in lecturers">
                <td>{{info.id}}</td>
                <td>{{info.name}}</td>
            </tr>
        </tbody>
    </table>
</template>

<script>
    export default {
        name: "ViewTable",
        props: [
            'lecturers'
        ]
    }
</script>

<style scoped>

</style>


Смотрел различную информацию в интернете по поводу передачи информации данных из Laravel в Vue, но везде сами печатают информацию, по типу такого:
$data = [
    ['id' => 1, 'name' => 'Admin'],
    ['id' => 2, 'name' => 'Truehero'],
    ['id' => 3, 'name' => 'Truecoder'],
];

return view('test', ['data' => $data]);


Т.е. тут нам известно всё, но что делать, когда мы этого не знаем и лезем в БД за данными? Как получить два столбца отдельно из массива $lecturer?
  • Вопрос задан
  • 998 просмотров
Решения вопроса 1
Fragster
@Fragster
помогло? отметь решением!
Зачем нужно именно два столбца - не понятно совсем. Способ получения данных - жесть.

А по передаче самих данных - поможет https://laravel.com/docs/7.x/blade#displaying-data , нужно чуть ниже промотать, и увидеть:

The @json directive is also useful for seeding Vue components or data-* attributes:
<example-component :some-prop='@json($array)'></example-component>

Using @json in element attributes requires that it be surrounded by single quotes.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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