我试图使用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