我无法弄清楚如何使用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
我的定义有什么问题,我将不胜感激任何帮助。
由于
答案 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();