Laravel访问反向关系信息


Laravel access inverse relation information

我试图使用Elequent访问父对象的一些信息,但很难弄清楚它是如何工作的。比方说啤酒属于啤酒厂,啤酒厂有很多啤酒。我有啤酒控制器,模型和视图使用一个啤酒id来连接两者。我可以通过列出啤酒的啤酒厂页面来访问关系,这样我就知道它们是配对的,但我如何拥有一个包含所有啤酒及其所属啤酒厂的啤酒页面?基本上扭转了我的关系。

型啤酒厂

<?php
namespace App;
use Illuminate'Database'Eloquent'Model;
class Brewery extends Model
{
    public function Beers(){
        return $this->hasMany(Beer::class);
    }
}

Beers型号

<?php
namespace App;
use Illuminate'Database'Eloquent'Model;
class Beer extends Model
{
    protected $table = "Beers";
    public function Breweries() {
        return $this->belongsTo(Brewery::class);
    }
}

蜂鸣器控制器

<?php
namespace App'Http'Controllers;
use App'Beer;
use Illuminate'Http'Request;
use App'Http'Controllers'Controller;
class BeersController extends Controller
{
    public function index() {
        $beers = Beer::all();
        return view('beers.index', compact('beers'));
    }
    public function show(Beer $beer) {
        return $beer;
    }
}

蜂鸣器查看

@extends('layouts.app')
@section('content')
    <div class="container">
        <div class="row">
            <h1>Beers</h1>
            @foreach ($beers as $beer)
                <div>
                    {{ $beer->name }}
                    {{ $beer->brewery->name }}
                </div>
            @endforeach
        </div>
    </div>
@stop
{{ $beer->brewery->name }} change it to {{ $beer->Breweries->name }} 

因为您的关系方法名称是Breweries,或者在Beer模型中将您的方法重命名为brewery。方法使用小写字母

我想这会解决的问题

控制器

class BeersController extends Controller
    {
    public function index() {
        $beers = Beer::with('Breweries')->get();
        return view('beers.index', compact('beers'));
    }

视图:

@section('content')
    <div class="container">
        <div class="row">
            <h1>Beers</h1>
            @foreach ($beers as $beer)
                <div>
                    {{ $beer->name }}
                    {{ $beer->Breweries->name }}
                </div>
            @endforeach
        </div>
    </div>
@stop