【问题标题】:Property [name] does not exist on this collection instance in Laravel 6Laravel 6 中此集合实例上不存在属性 [名称]
【发布时间】:2020-03-04 16:22:56
【问题描述】:

我正在尝试在我的应用程序中显示单本书。可以显示“书籍”表中的所有数据,但仅此而已。如果我想显示我所有的书,我也可以显示来自其他表的连接数据,但如果我只想显示一本书的数据,我似乎无法让它工作并且我找不到问题。

BookController:

public function show($id)
    {
        $book = Book::findOrFail($id);
        $languages = Language::all();
        $genres = Genre::all();
        $authors = Author::all();
        $publishers = Publisher::all();

        return view('books/show', compact('book', 'languages', 'genres','authors','publishers'));
    }

show.blade.php:

@extends('layout')


@section('title')
<title>Alle Bücher</title>
@section('content')
<style>
    .uper {
        margin-top: 40px;
    }
</style>
<div class="uper">
    @if(session()->get('success'))
    <div class="alert alert-success">
        {{ session()->get('success') }}
    </div><br />
    @endif
    <div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2> {{ $book->title }}</h2>
            </div>
            <div class="pull-right">
                <a class="btn btn-primary" href="{{ route('books.index') }}"> Back</a>
            </div>
        </div>
    </div>

    <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>ID:</strong>
                {{ $book->id }}
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Details:</strong>
                {{ $book->title }}
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Autor(en):</strong>
                @foreach($book->authors as $author)
                {{$book->authors->name}}
                @endforeach
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Jahr:</strong>
                {{ $book->year }}
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Verlag(e):</strong>
                @foreach($book->publishers as $publisher)
                {{$publisher->name}}
                @endforeach
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Genre(s):</strong>
                @foreach($book->genres as $genre)
                {{$genre->name}}
                @endforeach
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Sprache:</strong>
                {{$book->language->name}}
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>ISBN:</strong>
                {{ $book->isbn }}
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Seitenzahl:</strong>
                {{ $book->pages }}
            </div>
        </div>
    </div>
    @endsection

【问题讨论】:

    标签: php mysql laravel-6


    【解决方案1】:

    你有一个逻辑错误; {{ $book-&gt;authors-&gt;name }} 是错误的。您正确循环 $book-&gt;authors,但随后引用了错误的变量。修复如下:

    @foreach($book->authors as $author)
      {{ $author->name }}
    @endforeach
    

    注意;您在后面的代码中使用 $book-&gt;publishers as $publisher$book-&gt;genres as $genre 正确执行了此操作,因此请检查您的一致性。

    【讨论】:

      猜你喜欢
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      相关资源
      最近更新 更多