如何从Laravel 5中的多个表中获取特定列?

时间:2016-06-18 19:39:23

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

我有3张桌子,

  1. 国家: ID, 名称

  2. 省: ID, 名称, COUNTRY_ID

  3. 城市: ID, 名称, province_id

  4. 我在Model中定义了如下关系,

    国家模型:

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

    省份型号:

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

    城市模型:

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

    我正在使用以下查询,但它会使用国家/地区名称覆盖所有数据。

        $city = DB::table('cities')
            ->join('provinces', 'cities.province_id', '=', 'provinces.id')
            ->join('countries', 'provinces.country_id', '=', 'countries.id')
            ->select('cities.name','provinces.name','countries.name')
            ->get();
    

    我想在laravel 5中从这些表格中获取城市名称,省名称,国家/地区名称的结果。你能帮助我吗?

4 个答案:

答案 0 :(得分:3)

Try just using as:

->select('cities.name as city_name', 'provinces.name as province_name', 'countries.name as country_name')

答案 1 :(得分:0)

你会尝试这个:

$city = DB::table('cities')
    ->join('provinces', 'cities.province_id', '=', 'provinces.id')
    ->join('countries', 'provinces.country_id', '=', 'countries.id')
    ->get(['cities.name', 'provinces.name', 'countries.name']);

我希望它可以帮到你!

答案 2 :(得分:0)

好的,这将是一个具体的答案 了解laravel中的实现并查看这些

class example1 extends Model
    {
      public function examplefunction() {
        return $this->hasMany('App\othermodel', 'id');
    }
}

然后使用此查询

$abc=example1::with('examplefunction')->get();

然后你去看看laravel关系,你可以使用它来获得综合结果

答案 3 :(得分:-1)

 $products = User::select('id', 'email', 'first_name', 'last_name','country_code','mobile')->get()->toArray();
       $gaurang = Ticket_Thread::select('body','title','resolv_note')