我正在使用laravel 5.4。我创建了国家和州表。
国家/地区表格如下所示
我的州表是:
在这里,我编写了连接查询,如下所示。它很完美。
$state = DB::table($this->tbl_states)
->join($this->tbl_countries, $this->tbl_countries.'.id', '=', $this->tbl_states.'.country_id')
->select($this->tbl_states.'.*', $this->tbl_countries.'.name as country_name')
->whereNull($this->tbl_states.'.deleted_at')
->paginate(10)
但是,我不想编写这个查询,而是想使用Eloquent ORM,那么我应该编写哪些查询?
在Country模型中,我创建了如下所示的函数:
public function states()
{
return $this->hasMany('state');
}
在状态模型中,我的写函数如下所示:
public function country()
{
return $this->hasOne('country');
}
答案 0 :(得分:1)
在Country
模型中试试这个:
public function states()
{
return $this->hasMany(App\State::class);
}
在State
模型中:
public function country()
{
return $this->belongsTo(App\Country::class);
}
然后$country->states
会给你这个国家的所有州。以及$state->country
将返回州的国家。