【发布时间】:2016-04-12 04:22:52
【问题描述】:
我正在尝试使用 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
【问题讨论】:
-
{{ $beer->brewery->name }} 将其更改为 {{ $beer->Breweries->name }} 因为您的关系方法名称是 Breweries 或将您的方法重命名为 Beer 中的 brewery模型。方法使用小写字母
-
@umefarooq 这很有效,感谢您对小写方法的提醒。如果您将此作为答案发布,我会接受。