2014-11-21 4 views
0

왼쪽 - 오른쪽 카테고리 트리에서 제품 데이터를 복구하려고합니다.Laravel : 모델을 변수로 푸시하는 방법은 무엇입니까?

이 내 코드는 지금까지 있습니다 :

$branches = Category::whereBetween('left', array($category->left, $category->right)) 
    ->get(); 

foreach ($branches as $branch) { 
    $products = $branch->product; 
} 

가 어떻게 모든 지점의 모든 제품을 얻을하기 위해 $ 제품에 대한 + = 또는 푸시 작업을 할 수 있습니까?

당신에게 대단히 감사합니다

편집 :

class Category extends Eloquent { 
    protected $fillable = array('left', 'right', 'user'); 

    public function producto(){ 
     return $this->hasMany('Product'); 

    } 
} 


class Product extends Eloquent { 
    protected $fillable = array('nombre', 'category', 'proveedor', 'costo', 'precio', 'tiempo_de_elaboracion', 'usuario', 'peso', 'precio_minimo', 'destacado'); 

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

    public function image(){ 
     return $this->hasMany('Image'); 
    } 
} 
+0

'$ products'는 컬렉션이나 배열인가? 또한 DB에서 바로 제품을 선택하는 것이 더 좋지 않을까요? 어떻게 든 가능해야한다고 확신합니다. – lukasgeiter

+0

확실하지 않습니다. 아직도 배우고 있습니다. Product라는 엔티티가 있는데 도움이되기를 바랍니다. –

+0

Product 모델과 Category 모델 클래스로 질문을 업데이트 할 수 있습니까? – lukasgeiter

답변

0

Laravel docs, 내가 먼저 가지를 찾았다 및 목록에 넣어 : 다음

$array = $branches->lists('id'); 

그리고,이 지점에서 제품을 찾았 :

$products = Product::whereIn('category_id', $array)->paginate(24); 

바보 같은 질문에 대해 미안하다. 잘못된 포커스를 적용하고있다.

0

는 배열에 항목을 밀어 :

$products = array(); 
foreach ($branches as $branch) { 
    $products[] = $branch->product; 
} 
0

지점 사이에 어떤 관계이 내 모델 클래스입니다

생성물? 내가 생각해? Branch 모델에서이 관계를 어떻게 정의 했습니까? 당신이 그것을 정의에 논리적 구문을 보존하는 경우,

모든 좋은 데이터를 검색하는 경우

가 훨씬에 당신은 실제로이 작업을 수행 할 수

$products = []; 
foreach ($branches as $branch) { 
    $products += $branch->products; 
} 
1

를 사용하여 ... 코드에서 $branch->products으로 호출해야합니다 더 좋은 방법. 먼저 범주를 가져온 다음 각 범주의 제품을로드하는 대신 범주에있는 모든 제품을 쿼리 할 수 ​​있습니다.

우리는 관계에 대한 조건을 설정할 수있는 whereHas을 사용할 것입니다. 끝에

$products = Product::whereHas('category', function($q) use ($category){ 
    $q->whereBetween('left', array($category->left, $category->right)); 
})->get(); 
관련 문제