我试图使用Elequent访问父对象的一些信息,但是很难弄清楚它是如何工作的。假设一瓶啤酒属于啤酒厂,而啤酒厂有很多啤酒。我有啤酒控制器,模型和视图使用一个brewery_id连接这两个。我可以通过一个列出啤酒的啤酒厂页面来访问这个关系,这样我就知道它们是对的,但是我如何在一个啤酒页面中包含所有的啤酒和它们所属的酿酒厂?基本上是颠倒了我如何得到这段关系。
啤酒厂模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Brewery extends Model
{
public function Beers(){
return $this->hasMany(Beer::class);
}
}啤酒模型
<?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发布于 2016-04-12 19:39:37
{{ $beer->brewery->name }} change it to {{ $beer->Breweries->name }} 因为您的关系方法名是Breweries,或者在Beer模型中将您的方法重命名为啤酒厂。用小写字母表示方法
发布于 2016-04-12 06:53:37
我想这会解决你的问题
控制器
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>
@stophttps://stackoverflow.com/questions/36563584
复制相似问题