Eloquent ORM一对多查询无法正常工作

时间:2017-02-14 10:18:04

标签: eloquent laravel-5.4

我正在使用laravel 5.4。我创建了国家和州表。

国家/地区表格如下所示

enter image description here

我的州表是:

enter image description here

在这里,我编写了连接查询,如下所示。它很完美。

$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');
}

1 个答案:

答案 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将返回州的国家。

官方文件:Eloquent: Relationships