从查询构建器转换为具有3个表的eloquent模型

时间:2016-06-19 11:18:30

标签: mysql laravel eloquent laravel-5.2 laravel-query-builder

如何将以下查询转换为Laravel 5中的雄辩模型?

    $city = DB::table('cities')
        ->join('provinces', 'cities.province_id', '=', 'provinces.id')
        ->join('countries', 'provinces.country_id', '=', 'countries.id')
        ->select('cities.name as City','provinces.name as Province','countries.name as Country')
        ->where('cities.isDelete', '=', '0')
        ->get();

我的表结构是:

  1. 国家:     ID,     名称

  2. 省:     ID,     名称,     COUNTRY_ID

  3. 城市:     ID,     名称,     province_id

  4. 我已经完成了使用2个表的雄辩模型,但我不知道如何管理3个表。 附:我已经在模型中正确定义了我的关系。

1 个答案:

答案 0 :(得分:0)

试试这些代码。有关详细信息,请参阅https://laravel.com/docs/5.2/eloquent-relationships

 //Create this method in city model

public function province()
    {
        return $this->belongsToMany('App\Province');
    }

//Create this method in province model

public function country()
    {
        return $this->belongsTo('App\Country');
    }

现在尝试此查询

$city = DB::table('cities')->with('province','province.country')
        ->where('cities.isDelete', '=', '0')
        ->get();

结果数据将采用嵌套形式

like cities
       -province
         ->country