2015-06-15 48 views
0

我有兩個型號的城市,business.I必須執行下面查詢查詢一到一個在laravel

  1. 查找業務的城市名稱。
  2. 尋找有最大業務的10大城市。

這裏是車型

業務

class Business extends \Eloquent 
{ 
    protected $fillable = [ 
     'business_type', 
     'first_name', 
     'last_name', 
     'email', 
     'password', 
     'designation_id', 
     'name', 
     'description', 
     'portfolio_id', 
     'image', 
     'city_id', 
     'package_id', 
     'group_tag_id' 
    ]; 

    public function city() 
    { 
    return $this->belongsTo('City'); 
    } 
} 

class City extends \Eloquent 
{ 
    protected $fillable = ['name', 'district_id']; 
    public function business() 
    { 
     return $this->hasMany('Business'); 
    } 
} 

所以,我怎麼能這樣做?根據城市名稱

$city = City::with('business')->get()->sortBy(function($query) { 
             return $query->business->count(); 
            }, SORT_REGULAR, true) 
         ->take(10); 

查找業務:

回答

1

嗨,您可以通過此方式獲取這樣的:

發現它們具有最大的商業城市前10名。

Business::whereHas('city', function ($q) { 
    $q->where('name', 'like', 'search_string');//name is the city_name as per your attributes name 
})->get(); 
+0

如果我想按名稱排列城市,我應該在哪裏放置orderBy方法?在$ q-> where('name','like','search_string')之後的 –

+0

;添加 $ q-> orderBy('name','ASC'); – SKG

+0

我想訂購排名前10位的城市 –