我有一个名为“motors”的主选项卡,它们的属性保存在子表“motor\u attributes”中。心房是动态的,可以容纳任何id和值。这种关系是一对多关系。问题是我不能搜索任何属性。它给我相同的父表项“entries”。
我想说得更清楚些。每次给我6个入口。即使我更改$request->get('body\u condition')的值。手动。因为它的查询字符串。我想对这些属性进行最佳过滤。任何帮助都将不胜感激。它只是隐藏属性,而不是主广告。任何帮助都将不胜感激。提前谢谢
```
$perPage = 20;
$motorQuery = Motor::with(['advertisementPhotos', 'country', 'city', 'customer.dealer','favouriteAd', 'adAttributes' => function ($query) use ($request){
// dd($request->get('body_condition'));
$query->where('integer_value',$request->get('body_condition'));
$query->with('attribute');
$query->with('adAttributeValue');
$query->where('show_listing_page',1);
//;
// return $query->take(2);
}])
->where('status', 1)
->where('date_expiry', '>=', date('Y-m-d') . ' 00:00:00');
if (request()->filled('city')) {
$motorQuery->where('city', request()->get('city'));
}
if (request()->filled('keywords')) {
$motorQuery->where('title', 'like', '%' . request()->get('keywords') . '%');
}
if (request()->filled('from_price')) {
$motorQuery->where('price', '>=', request()->get('from_price') );
}
if (request()->filled('to_price')) {
$motorQuery->where('price', '<=', request()->get('to_price') );
}
if (request()->hasCookie('country')) {
$motorQuery->where('country', request()->cookie('country')->first()->id);
}
$data['allMotors'] = $allMotors = $motorQuery->orderBy('featured', 'desc')->orderBy('date_posted', 'desc')->paginate($perPage);
```
```
2条答案
按热度按时间bejyjqdl1#
您必须尝试使用join作为属性过滤器。另外,如果任何一个表与属性相关,并且您希望从这些表中获得一些数据,也可以将这些表也放入join中。尝试以下操作:
看看对你有用吗。
tyky79it2#
好的,我从你的代码中看到,你试图在这里过滤电机,并且在错误的地方使用过滤器。
with子句中的过滤器将只过滤要加载的关系,而不是父模型。
要在语法清晰的情况下过滤父模型,请使用“has”或快捷方式“wherehas”: