Отображать только выбранные поля в виде, используя Laravel Query Builder - PullRequest
0 голосов
/ 22 мая 2019

У меня есть цитаты, которые я показываю на экране по одному при каждом обновлении страницы. Данные отображаются нормально из БД; проблема в том, что я получаю отображение (id) на экране, когда мне нужны только цитата и имя автора. Как я могу "исключить" поле идентификатора из отображения в моем представлении?

Контроллер

public function index()
{
    $quotes = DB::table('quotes')->inRandomOrder()->first();

    return view('home', compact('quotes'));
}

Лопасть / View

@foreach($quotes as $quote)
    <p>{{$quote}}</p>
@endforeach

1 Ответ

4 голосов
/ 22 мая 2019

Редактировать на основе комментария @devk:

Обычно отвечает на вопрос ОП, но код здесь (и в посте ОП) не совсем имеет смысла. -> first () вернет ноль или единицу цитата, но @foreach (..) используется как набор цитат

Вы можете сделать запрос следующим образом:

$quote = DB::table('quotes')->select('quote', 'author')->inRandomOrder()->first();

заменив 'quote' и 'author' именами полей в вашей таблице.
И верните цитату:

return view('home', compact('quote'));

А в клинке покажите объект:

<p>{{$quote}}</p>

или показать поля:

@isset($quote)
    // $quote is defined and is not null...
    <p>{{$quote->quote}}</p>
    <small>{{$quote->author}}</small>
@endisset

Если вы хотите показать несколько кавычек, сделайте запрос следующим образом:

$quotes = DB::table('quotes')->select('quote', 'author')->inRandomOrder()->get();  

или

$quotes = DB::table('quotes')->select('quote', 'author')->inRandomOrder()->take(5)->get();

А в клинке вы можете просмотреть коллекцию:

@foreach($quotes as $quote)
    <p>{{$quote}}</p>
@endforeach

или

@foreach($quotes as $quote)
    <p>{{$quote->quote}}</p>
    <small>{{$quote->author}}</small>
@endforeach
...