2016-04-12 20 views
0

Ich versuche mit Elequent auf einige Informationen eines Elternobjekts zugreifen, aber es ist schwer herauszufinden, wie es funktioniert. Sagen wir, ein Bier gehört zu einer Brauerei und eine Brauerei hat viele Biere. Ich habe die Biere Controller, Modell und Ansicht mit der a brewery_id, um die beiden zu verbinden. Ich kann die Beziehung durch eine Brauereitabelle erschließen, die die Biere auflistet, also weiß ich die Paarung, aber wie habe ich eine Bierseite mit allen Bieren und der Brauerei, zu der sie gehören? Im Grunde Umkehr, wie ich die Beziehung bekomme.Laravel Access inverse relation Informationen

Brauerei Modell

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Brewery extends Model 
{ 

    public function Beers(){ 

     return $this->hasMany(Beer::class); 

    } 
} 

Bier Modell

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Beer extends Model 
{ 

    protected $table = "Beers"; 

    public function Breweries() { 

     return $this->belongsTo(Brewery::class); 

    } 
} 

Beers-Controller

<?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; 

    } 

} 

Beers Ansicht

@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 
+0

{{$ Bier-> Brauerei-> Name}} ändern Sie es in {{$ Bier-> Brauereien-> Name}}, weil Ihre Beziehung Methodenname ist Brauereien oder benennen Sie Ihre Methode zur Brauerei in Beer Modell. Verwenden Sie einen kleinen Buchstaben für Methoden – umefarooq

+0

@umefarooq Das hat funktioniert und danke für die Köpfe auf unteren Gehäuse-Methoden. Wenn du dies als Antwort postest, werde ich es akzeptieren. – Packy

Antwort

0
{{ $beer->brewery->name }} change it to {{ $beer->Breweries->name }} 

weil Ihre Beziehung Methodenname ist Brauereien oder benennen Sie Ihre Methode zur Brauerei im Biermodell. Verwenden Sie einen kleinen Buchstaben für Methoden

0

Ich denke, dies wird Ihr probleme

-Controller

class BeersController extends Controller 
    { 

    public function index() { 

     $beers = Beer::with('Breweries')->get(); 

     return view('beers.index', compact('beers')); 
    } 

Ansicht fix:

@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 
Verwandte Themen