2013-09-02 2 views
2

질문 제목으로 불편을 드러내며 유감스럽게도 제목을 찾을 수 없습니다.laravel에서이 정보를 가져올 수있는 방법 Eloquent

저는 Laravel 3를 Eloquent 모델 (Laravel의 첫 번째 프로젝트)과 함께 사용합니다. 나는 user, listitem 모델을 보유하고 있습니다. 사용자가 목록을 가져올 수 없으면 목록에서 항목을 가져올 수 있습니다. 그러나 사용자는 항목을 주문할 수 있으므로 주문은 사용자/항목별로 저장됩니다.

은 (명확성을 위해 단순화) 다음과 같은 데이터를 더 명확됩니다

데이터베이스 테이블 :

USER 
-------- 
id 
name 

LIST 
------- 
id 
name 

ITEM 
------- 
id 
list_id 
name 

USER_ITEM_ORDER 
--------------- 
user_id 
item_id 
order 

목록 모델 :

class List extends Eloquent { 
    public function items() { 
     return $this->has_many('Item'); 
    } 
} 

지금 내가하는 목록 모델을 사용하려면 사용자를 기반으로 모든 항목을 가져옵니다. $list->items($user_id) -> 사용자 주문이있는 항목이있는 배열.

누군가이 방법을 제시 할 수 있습니까?

답변

0

그래! 나는 그것을 고쳤다. : 업 투표가 있기 때문에 D 난 그냥 같이 반환 된 객체에 Fluent를 사용

그것은 매우 쉬웠다 .. 내 자신의 질문에 대답합니다 : 귀하의 답변에 대한

public function items($user_id = 0) { 
    $items = $this->has_many('Item'); 

    // do we need to get the order? 
    if($user_id != 0) { 
     $items = $items->left_join('user_item_order', 'items.id', '=', 'user_item_order.item_id') 
         ->where('user_item_order.user_id', '=', $user_id) 
         ->order_by('user_item_order.order', 'asc'); 
    } 

    return $items->get(); 
} 
0

이 코드를 사용하여 시도해보십시오 :

public static function NAMEUserId() { 
     $query = DB::table('username') 
     ->select(array('users.username', DB::raw('NAME(user's.id) as UserID'))) 
     ->join('users', 'items.user_id', '=', 'users.id') 
     ->group_by('users.id') 
     ->order_by('usersid', 'desc') 
     ->get(); 
    return $query; 
} 
+0

감사합니다. 하지만 사용자가 추가 한 총 항목 수를 계산하고 싶지는 않습니다. 모든 항목을 가져오고 항목에 사용자의 주문 속성 집합이 있어야합니다. –

+0

주문 세부 정보를 사용자 이름으로 저장 하시겠습니까? – Sweet72

+0

나는 긍정이라고 생각한다. .. 그러나 확실한. 모든 사용자는 동일한 목록 항목을 주문할 수 있습니다. 시스템은 사용자 당 주문을 저장합니다. 사용자 주문서로 상품을 받고 싶습니다. –

관련 문제