Laravel 没有从数据库中获取信息,显示错误

Laravel not getting info out of database, displays erros

抱歉,我是 Laravel 上的开发新手。我试图在我的页面上显示数据库中包含的信息。但是它找不到保存所有数据的变量。我可以在 Tinker 中看到信息,但我似乎无法隐藏它。

我发了一些照片,你可以看看。我很想听听您的反馈。

图片: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'));
    }

Blade:

@extends('layout')

@section('title','Welcome')

@section('content')

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

{{ $complaints }}


@endsection

尝试使用如下的另一种语法:

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

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

正如@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 不存在

你应该试试这个:

您的控制器

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

您没有路由到控制器中的正确功能。试试这个

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