2014-10-28 4 views
0

내 그룹 목록 표시에서 범위 쿼리를 사용하고 그룹이 국가 테이블에 속합니다. 그룹 이름을 검색 및 정렬 순서로 아무 문제없이 사용할 수 있습니다. Laravel 4를 사용하는 다른 테이블의 쿼리 범위

는 내가하고 싶은 싶어 지금은 다음과 같습니다 : 국가 테이블에 저장됩니다

1) 검색 국가 이름

국가 테이블에 저장됩니다

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); 

} 
관련 문제