2016-11-29 4 views
0

Я хочу удалить отфильтрованную коллекцию из коллекций, как будто у меня есть возвращенные коллекции.Отфильтровать коллекции и удалить коллекцию eloquent laravel

$products = items::where('item_id',$request->item_id)->with('product_reviews')->with('product_reviews.profile')->get(); 
foreach($products->product_reviews as $r): 
    if($r->status==='unapproved'): 
     //remove this from 'products' collections because its not approved yet 
     $this->remove($this); 
    endif; 
endforeach; 

но

$this->remove($this); 

не работает, ни действительный синтаксис, чтобы удалить коллекцию, я просто не знаю, как удалить отфильтрованную коллекцию, например, если статус столбца содержит «unapproved». Любые идеи, пожалуйста, помогите?

+1

Почему бы вам не включить другое имя, касающееся статуса? – ggderas

+0

Можете ли вы разместить примерную базу в моем фрагменте кода, пожалуйста? –

+0

Я не знаю, как это сделать, поскольку я нацелен на товарные представления, которые относятся к модели элементов. –

ответ

1

В вашем отношении вы можете добавить условие. Это не проверено, но, скорее всего, решит вашу проблему.

items::where('item_id',$request->item_id)->with([ 
    'product_reviews' => function ($query) { 
     $query->where('status', 'approved')->with('profile'); 
    } 
])->get(); 
+0

это работает как шарм, спасибо! :) –

+0

безупречный! удовольствие. –

+0

ах мой плохой, он не работает, к сожалению :(плохой у меня есть инструкция «если» в моем клипе, где отображается только, если статус одобрен, почему я думал, что это сработало, но это было из-за утверждения if на моем клиенте –

0

Хм .. немного странно, поскольку другие 2 решения должны работать на ваш случай.

Вы пытались фильтровать и передавать объекты в другой массив и показывать их внутри вашего вида? Нравится:

$productWithReviews = items::where('item_id',$request->item_id)->with('product_reviews')->get(); 
$products = []; 
foreach($productWithReviews->product_reviews as $r): 
    if($r->status!=='unapproved'): 
     $products[] = $r; 
    endif; 
endforeach; 
Смежные вопросы