Laravel在HasOne方法中回显除primary之外的其他字段

时间:2013-12-24 15:47:08

标签: model laravel eloquent has-one

在Laravel中,我正在尝试使用hasOne与模型建立输出关系数据。

我的表格是:

User
--------
id name  country_id    
1  Hakan   1

Country
--------
id country
1   Turkey

我的模型如下:

class User extends Eloquent{

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

}

查看代码:

$country = User::find(1)->country;

当我运行此代码时,它会输出id国家/地区,但我想回显国家/地区名称。我试过并搜索过但找不到任何帮助。

2 个答案:

答案 0 :(得分:2)

根据您下面的表格关系

User
--------
id name  country_id    
1  Hakan   1

Country
--------
id country
1   Turkey

你在模型中的关系应该是

class User extends Eloquent{
    public function country() {
        return $this->belongsTo('Country');
    }
}

因此,您可以使用

获取国家/地区名称
$country = User::find(1)->country;
echo $country->country;

如果你想使用这样的东西

$users = Country::find(1)->users;
echo $users->first()->name; // get the first user's name
echo $users->get(1)->name; // get the second user's name

然后,您可以在hasMany模型中使用Country,例如

class Country extends Eloquent {
    public function users()
    {
        return $this->hasMany('User');
    }
}

答案 1 :(得分:0)

当您运行$country = User::find(1)->country;时,$country现在将包含您的Country模型的实例。如果您想访问国家/地区名称,则需要通过该模型的属性获取该名称:

echo $country->country;