2014-10-28 50 views
0

我在我的組列表顯示中使用範圍查詢,並且組屬於國家/地區表。我可以使用組名作爲搜索和排序順序沒有任何問題。使用Laravel在不同表中查詢範圍4

想我想現在要做的有以下幾種:存儲在Country表

1)搜索國名

存儲在Country表2)排序國家名稱

# Group Model # 
class Group extends Eloquent 
{ 
    protected $table = 'group'; 
    protected $guarded = array('id'); 

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

    public function scopeName($query, $name) 
    { 
     return $query->where('group_name', 'LIKE', "%$name%"); 
    } 

    public function scopeSortName($query, $order_by = 'asc') 
    { 
     return $query->orderBy('group_name', $order_by); 
    } 
} 

# Country Model # 
class Country extends Eloquent 
{ 
    protected $table = 'country'; 

    public function groups() { 
     return $this->hasMany('group'); 

    } 
} 

# Group Controller # 
public function index() 
{ 
    // search group name 
    $groups = Group::name($s_name); 

    // order group name 
    $groups = $groups->sortName($orderBy); 

} 

回答

0

我不認爲有一種方法可以在不加入它的情況下使用其他列表的表格對記錄進行排序。因此在我的控制器中我使用了JOIN查詢。

# Group Controller # 
public function index() 
{ 
    // join the table Group and Country tables 
    $groups = Group::join('country', 'country.id', '=', 'group.country_id'); 

    // search group name 
    $groups = $groups->name($s_name); 

    // order group name 
    $groups = $groups->sortName($orderBy); 

}