我正在尝试使用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
答案 0 :(得分:0)
我想这会解决你的问题
<强>控制器强>
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
答案 1 :(得分:0)
{{ $beer->brewery->name }} change it to {{ $beer->Breweries->name }}
因为您的关系方法名称是Breweries,或者在Beer模型中将您的方法重命名为brewery。使用小写字母方法