Laravel雄辩的一对多关系

时间:2018-05-17 12:01:54

标签: php database laravel orm eloquent

我无法弄清楚如何使用Eloquent来定义一对多关系。

这是表格

----------- Country -----------
id | title | code | currency_code

----------- Currency Code --------
id | name | symbol | code 

一个国家/地区可能有多种货币。

因此我将模型定义如下

class Country extends Model
{
    public function currencies()
    {
        $this->hasMany('App\Models\Currency', 'code', 'currency_code');
    }

}

货币模型很简单

class Currency extends Model
{


}

我正在选择那样的国家

   return Country::all('country_id AS value', 'title_ru AS title','currency_code')
   ->sortBy('value');

但是当我尝试访问货币时它返回null

我的定义有什么问题,我将不胜感激任何帮助。

由于

2 个答案:

答案 0 :(得分:0)

你应该试试这个:

国家/地区模型

class Country extends Model
{
    public function currencies()
    {
        $this->belongsTo('App\Models\Currency', 'currency_code');
    }

}

货币模型

class Currency extends Model
{
    public function country()
    {
        $this->belongsTo('App\Models\Country');
    }

}

答案 1 :(得分:0)

您可以像以下代码一样设置模型:

国家/地区型号:

class Country extends Model
{
    protected $table = 'country';
    protected $primaryKey = 'id';

    public function currency(){
        return $this->hasMany(App\Models\Currency', 'code', 'currency_code');
    }

}

货币模型:

class Currency extends Model
{
    protected $table = 'currency';
    protected $primaryKey = 'id';

    public function country(){
        return $this->belongTo('App\Models\Country', 'code');
    }

}

然后,如果您想获得特定的国家/地区数据(使用货币),您可以使用此功能:

$data = County::where('id','=',$id)->with('currency')->first();

或者,如果您想获得所有可以使用的东西:

$data = County::with('currency')->get();