我有这些表格:
类别 - >线 - >产品 - >过滤
一个产品有很多过滤器
一种产品有一个类别和一行
我需要为一个类别获取所有过滤器。 今天,通过表格之间的关系,我可以从一个产品中获取所有类别的产品和所有过滤器:
// All the products
$category->products
// All the filters
$product->filters
//or
$category->products->first()->filters
现在,我需要按类别获取过滤器,例如:
$category->filters
// or
$category->products->filters
小简报:
如何按类别获取所有过滤器?
答案 0 :(得分:3)
在public function filters()
{
return Filter
::join('filter_product', 'filter.id', '=', 'filter_product.filter_id')
->join('products', 'filter_product.product_id', '=', 'products.id')
->join('categories', 'products.category_id', '=', 'categories.id')
->where('categories.id', $this->id);
}
public function getFiltersAttribute()
{
if (!$this->relationLoaded('products') ||
!$this->products->first()->relationLoaded('filters')) {
$this->load('products.filters');
}
return collect($this->products->lists('filters'))->collapse()->unique();
}
模型中:
$category->filters
然后你就可以像这样使用它:
filter
要保证唯一的id
结果,您需要传递唯一字段,例如。 return collect($this->products->lists('filters'))->collapse()->unique('id');
:
@echo off
set /p server=What server is being restarted?
set /p setTime=What time?
PowerShell.exe "& 'c:\users\%username%\Desktop\dotComEmails\xServerIsDown.ps1' '%server%' '%setTime%'"
答案 1 :(得分:0)
如果我理解正确,你需要with子句:
$category->with(products.filters)->get()