2016-04-12 23 views
0

Bir üst nesneyle ilgili bazı bilgileri, Onar'ı kullanarak, ancak nasıl çalıştığını anlamaya çalışmakla zorlayarak erişmeye çalışıyorum. Bir biranın bir bira imalathanesine ait olduğunu ve bir bira fabrikasının çok sayıda bira olduğunu söyleyelim. Ben ikisini bağlamak için bir brewery_id kullanarak bira denetleyicisi, model ve görünüm var. Biraları listeleyen bir bira fabrikası sayfasıyla ilişkiye erişebilirim, böylece eşleştirmeyi biliyorum, ama ait oldukları bira ve biraların bulunduğu bir bira nasıl olur? Temel olarak ilişkiyi nasıl ele aldığımı tersine çeviriyorum.Laravel erişimde ters ilişki bilgileri

Brewery Modeli

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Brewery extends Model 
{ 

    public function Beers(){ 

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

    } 
} 

Beers Modeli

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Beer extends Model 
{ 

    protected $table = "Beers"; 

    public function Breweries() { 

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

    } 
} 

Beers Kontrolörü

<?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 Görünüm

@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

{{$ beer-> brewery-> name}} bunu {{$ beer-> Breweries-> name}} olarak değiştirin, çünkü ilişki yönteminizin adı Breweries'dir veya yönteminizi Bira'da bira olarak yeniden adlandırır modeli. Metotlar için küçük harf kullanın – umefarooq

+0

@umefarooq Çalıştı ve alt kasa metotları üzerindeki kafalar için teşekkürler. Bunu bir cevap olarak gönderirseniz kabul edeceğim. – Packy

cevap

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

çünkü Bira modelinde. Yöntemler için küçük harf kullanın

0

Bu

Denetleyicisi sizin probleme çözecektir sanırım

class BeersController extends Controller 
    { 

    public function index() { 

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

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

Görünüm: ilişkiniz yöntemi adı Bira veya brewery için yöntem adlandırmak olduğunu

@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