如何在数据透视表上应用过滤器?
Posted
技术标签:
【中文标题】如何在数据透视表上应用过滤器?【英文标题】:How to apply filter on pivot table? 【发布时间】:2021-11-11 01:34:25 【问题描述】:类别模型
public function lists()
return $this->belongsToMany(Listing::class);
上市模式
public function categories()
return $this->belongsToMany(Category::class)
->withPivot(['category_id','listing_id']);
控制器:当我 dd
这个查询时,我会得到列表表中的所有列表,但我只想获取那些具有这些类别的列表。
if($request->categories)
$var = $request->categories; // data in array 1,2,3
$lists = Listing::with(['categories' => function ($query) use($var)
$query->whereIn('category_id',$var);
])->get();
dd($lists);
【问题讨论】:
这看起来像是一个错字:whereIn('category_id',['=',$var])
。 The docs show the correct syntax,所以像 whereIn('category_id', $var)
这样的东西应该是正确的。
顺便说一句:belongsToMany(listing::class)
- 显然有效,但模型名称应正确大写:belongsToMany(Listing::class)
。
@Don'tPanic 如果您对此问题有任何答案,那么最好不要投反对票并纠正不属于我的问题的语法。
您发布的代码有错误。我指出了这些错误并描述了如何为您修复它们。如果你在这里写的不是实际上你的代码......好吧,对不起,我的读心术今天似乎不起作用。祝你好运。
【参考方案1】:
这段代码运行良好
$state=$request->state;
$type=$request->type;
$categories=$request->categories;
if(!$request->all()==null)
$lists = Listing::when($state!=Null,function ($query) use ($state)
return $query->where('state', $state);)->
when($type!=Null,function ($query) use ($type)
return $query->where('type', $type););
if(!$categories==null)
foreach($categories as $var)
$lists->whereHas('categories',function($q) use($var)
$q->where('category_id',$var);
);
$lists=$lists->get();
【讨论】:
【参考方案2】:给你的桌子一些 id 名字
<table id="userTable" style="display: table;" class="table table-responsive text-center table-striped table-hover">
然后使用以下脚本:
<script type="text/javascript">
$(document).ready(function()
var table = $('#userTable').DataTable(
scrollY: "400px",
scrollX: true,
scrollCollapse: true,
paging: true,
columnDefs: [
sortable: false,
"class": "index",
targets: 0
],
order: [[ 4, 'dsc' ]],
fixedColumns: true
);
table.on( 'order.dt search.dt', function ()
table.column(0, search:'applied', order:'applied').nodes().each( function (cell, i)
cell.innerhtml = i+1;
);
).draw();
);
</script>
现在您必须能够搜索、过滤、重新排序您的表格。
【讨论】:
以上是关于如何在数据透视表上应用过滤器?的主要内容,如果未能解决你的问题,请参考以下文章
Excel 2013 - 在基于 OLAP 的数据透视表上更改页面过滤器时记录的宏错误