Laravel не получает информацию из базы данных, отображает ошибки - PullRequest
0 голосов
/ 12 ноября 2018

Извините, я новичок в разработке на Laravel. Я пытаюсь показать информацию, содержащуюся в базе данных на моей странице. Но он не может найти переменную, содержащую все данные. Я могу видеть информацию в Тинкере, но я не могу показывать, что это.

Я разместил несколько фотографий, чтобы вы могли посмотреть. Я хотел бы услышать ваши отзывы.

Изображения: https://imgur.com/a/zLSqSDG

Код:

Маршрут:

<?php

Route::get('/', function () {
    return view('index');
});

Route::resource('complaints', 'ComplaintController');

Контроллер:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Complaint;

class ComplaintController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $complaints = Complaint::all();

        return view('index', compact('complaints'));
    }

Лезвие:

@extends('layout')

@section('title','Welcome')

@section('content')

{{-- @foreach ($complaints as $complaint)
    <h1>{{ $complaint->title }}</h1>
    <p>{{ $complaint->body }}</p>
@endforeach --}}

{{ $complaints }}


@endsection

Ответы [ 4 ]

0 голосов
/ 12 ноября 2018

Вы не направляете к правильной функции в вашем контроллере. Попробуйте это

Route::resource('complaints', 'ComplaintController@index');
0 голосов
/ 12 ноября 2018

Как сказал @amirhosseindz
Когда вы посещаете этот URL: http://127.0.0.1:8000/complaints, он будет работать, потому что вы нажимаете

Route::resource('complaints', 'ComplaintController');

Но когда вы посещаете этот URL: http://127.0.0.1:8000

вы выполняете это действие:

Route::get('/', function () {
    return view('index');
});

где $complaints не существует

0 голосов
/ 12 ноября 2018

Вы должны попробовать это:

Ваш контроллер

public function index() {
    $complaints = Complaint::all();
    return view('index',compact('complaints'));
}

Ваше мнение (index.blade.php)

@extends('layout')

@section('title','Welcome')

@section('content')

  @if(isset($complaints))
   @foreach ($complaints as $complaint)
    <h1>{{ $complaint->title }}</h1>
    <p>{{ $complaint->body }}</p>
   @endforeach
  @endif


@endsection
0 голосов
/ 12 ноября 2018

Попробуйте использовать другой синтаксис, как показано ниже:

public function index() {
    $complaints = Complaint::all();
    return view('index')->with(compact('complaints'));
}

или

 public function index() {
    $complaints = Complaint::all();
    return view('index')->with('complaints', $complaints);
}
...