데이터를 필터링 할 응용 프로그램을 만들었습니다. 인덱스 내부에서 설명, 모델, 상태, 주식 및 카테고리별로 제품을 필터링하는 필터를 만들었습니다. 내 카테고리는 erp_categoy
테이블을 통해 구성되며 제품과의 관계는 erp_product_category
(수신 제품 ID + 카테고리 ID)을 통해 이루어집니다. Model : Product, Category 및 ProductCategory에서 BelongsToMany 관계를 만들었습니다.belongsToMany 관계를 필터링하는 방법은 무엇입니까? Laravel 5.4
제품 모델
public function category()
{
return $this->belongsToMany('App\Category', 'erp_product_category', 'erp_productid', 'erp_categoryid');
}
분류 모델 내 인덱스에서
public function product()
{
return $this->belongsToMany('App\Product','erp_product_category', 'erp_categoryid', 'erp_productid');
}
PRODUCT_CATEGORY 모델
public function product()
{
return $this->belongsTo('App\Models\Product', 'erp_categoryid', 'erp_categoryid');
}
'erp_category'테이블의 모든 범주를 나열하는 선택 목록을 만들었습니다.
<select id="categoria" name="categoria" class="form-control" style="width: 150px;">
@foreach($cat as $categoria)
<option value="{{$categoria->erp_categoryid}}" @if($categoria->erp_categoryid === session('categoria')) selected @endif >{{$categoria->erp_name}}</option>
@endforeach
</select>
저는 JavaScript를 확장하고 세션 '카테고리'에 값을 저장했습니다.
<script src="{{ asset('assets/js/ProductSearch.js') }}"></script>
<script>
var postSearch = '{{ route('product::searchPost') }}';
var searchRequest = {
'categoria' :'{{session('categoria')}}',
};
</script>
그런 다음 JS를 통해 조사했습니다.
$(document).on('blur', '#categoria', function(){
var categoria = $('#categoria').val();
searchRequest['categoria'] = categoria;
doSearch();
});
function doSearch() {
$.post(postSearch, {
'search_data': JSON.stringify(searchRequest),
'_token': $('meta[name=csrf-token]').attr('content'),
}
, function(data) {
$('#product-table').html(data);
});
}
제품 테이블 (값을 반환하기 위해 만든 테이블)이 필요합니다. select를 통해 입력 한 카테고리를 통해 내 제품을 나열하지만 인덱스의 초기 목록을 반환합니다.
제품 테이블
<td>
@foreach($prod->category as $categoria)
{{$categoria->erp_name}}
@endforeach
</td>
컨트롤러
public function search(Request $request)
{
$product = Product::query();
$categoria = Category::query();
if ($request->isMethod('post'))
{
$data = json_decode($request->search_data);
$categoria;
$categoria = $data->categoria;
session(['categoria' => $categoria]);
if(strlen(session('categoria')) > 0)
{
$product_ids = Product::whereHas('category', function ($query){
$query->where('erp_category.erp_categoryid', '=', session('categoria'));
})->get();
$ids = [];
foreach($product_ids as $product_data)
{
$ids[] = $product_data->erp_productid;
}
$product = $product->whereIn('erp_category.erp_categoryid', $ids);
}
$content = $product->paginate(10);
$cat = Category::all();
if ($request->isMethod('post'))
{
return view('admin.product-table')->with('product', $content)->with('cat',$cat);
} else
{
return view('admin/product')->with('product', $content)->with('cat',$cat);
}
어떤 제안? 다음 뷰
$content = null;
if(strlen(session('categoria')) > 0) {
$product_ids = Product::whereHas('category', function ($query){
$query->where('erp_category.erp_categoryid', '=', session('categoria'));
});
$content = $product_ids->paginate(10);
$cat = Category::all();
}
if ($request->isMethod('post')) {
return view('admin.product-table')->with('product', $content)->with('cat',$cat);
} else {
return view('admin/product')->with('product', $content)->with('cat',$cat);
}
을 그리고 :이 같은 whereIn
또는 뭔가를 호출 할 때 컨트롤러에 문제가 발생해야
@if ($product !== null)
@foreach($product as $p)
<td>
@foreach($p->category as $categoria)
{{$categoria->erp_name}}
@endforeach
</td>
@endforeach
@endif
을
게시물 통화 후 어디에서 검색하려면 search_data를 사용하고 있습니까? – Laerte
@Laerte 컨트롤러를 놓는 것을 잊어 버렸습니다. 나는 이미 그것을 고쳤다. 죄송합니다. –
'dd ($ content);'결과가 예상 한 결과입니까? – Laerte