如何使用一对一从最近的表中获取行?

时间:2016-08-02 12:33:35

标签: laravel laravel-5.2

我有两张桌子:

Hotels | Countries
country  id name

我需要从酒店获取所有笔记,并且Hotels.country将成为国家/地区的名称:Countries.name

酒店型号有功能:

public function country()
    {
        return $this->hasOne('App\Country', 'country', 'id');
    }

在控制器中我试图获得所有与相关国家的酒店:

$hotels = Hotel::all();

尝试从$hotels获取每行的国家/地区名称后<:p>

foreach($hotels as $item){

echo $item->country["name"]; // It does not work
}

2 个答案:

答案 0 :(得分:2)

应该是

public function country()
{
    return $this->belongsTo('App\Country', 'country', 'id');
}

之后,

@foreach ($hotels as $hotel) {{ $hotel->country->name }}

应该有用。

答案 1 :(得分:1)

您需要使用预先加载。

$hotels = Hotel::with('country')->get();

查看文档here

为了访问国家/地区名称,它是一个普通对象:

$hotel->country->first()->name

如果您想在酒店模特

中拥有直接功能

Hotel.php

public function countryName()
{
    return $this->country->first()->name
}