laravel one to on hasOne关系手册外键和本地密钥检测错列

时间:2018-02-11 17:23:34

标签: php laravel laravel-5 foreign-keys relationship

我有两张桌子

enter image description here

enter image description hered

在上表中,我想搜索 countries.user_name (主键),并希望其 isdcodes.code中的isd代码 其中 isdcodes.country_username 是外键。

国家/地区型号:

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Country extends Model
{
protected $primaryKey = 'my_id';

public function isdcode(){
    return $this->hasOne('App\Isdcode', 'country_username', 'user_name');
} 
}

路线档案

Route::get('user/{country}', function ($country){
    return \App\Country::find($country)->isdcode;
});

听到我正在尝试搜索印度(国家/地区表中的user_name) http://localhost:8000/user/india 尝试获取非对象的属性 上面的结果是因为它试图在my_id中搜索印度,但我想在user_name中搜索它。

http://localhost:8000/user/1 { “isd_id”:1, “country_username”: “印”, “代码”:91, “created_at”:空 “的updated_at”:空}

提前真的感谢你。

1 个答案:

答案 0 :(得分:3)

find()方法使用主键,因此您需要将其更改为:

return \App\Country::where('user_name', $country)->first()->isdcode;

或者,如果您想将此列用作PK:

,请执行此操作
protected $primaryKey = 'user_name';