【问题标题】:Laravel access inverse relation informationLaravel 访问反向关系信息
【发布时间】: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 这很有效,感谢您对小写方法的提醒。如果您将此作为答案发布,我会接受。

标签: php laravel


【解决方案1】:
{{ $beer->brewery->name }} change it to {{ $beer->Breweries->name }} 

因为您的关系方法名称是 Breweries 或在 Beer 模型中将您的方法重命名为 brewery。方法使用小写字母

【讨论】:

    【解决方案2】:

    我想这会解决你的问题

    控制器

    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
    

    【讨论】:

      猜你喜欢
      • 2018-07-05
      • 2019-01-07
      • 1970-01-01
      • 1970-01-01
      • 2017-09-21
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多