mysql - laravel 根据属性过滤结果
问题描述
我有一个名为“motors”的主表,它们的属性我保存在子表“motor_attributes”中。属性是动态的,它们可以保存任何 id 和 value。关系是一对多的关系。问题是我无法搜索任何属性。它给了我相同的父表项“条目”。
我想让它更清楚。每次它给我6个enteries。即使我更改了 $request->get('body_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);
```
解决方案
您必须尝试使用 join 进行属性过滤。此外,如果任何与属性相关的表并且您希望这些表中的一些数据也加入这些表中。尝试这样的事情:
$motorQuery = Motor::with(['advertisementPhotos', 'country', 'city', 'customer.dealer','favouriteAd'])
->join('ad_attribute_value', 'ad_attribute_value.motor_id', '=', 'motor.id')
->where(function($query) use ($request){
if($request->get('body_condition') != '')
$query->where('integer_value', '=', $request->get('body_condition'))
})
->where('status', 1)
->where('date_expiry', '>=', date('Y-m-d') . ' 00:00:00');
看看它是否适合你。
推荐阅读
- swift - 滚动时collectionView单元格图像更改 - 快速 - 以编程方式
- php - 如何让 NumberFormatter::parse() 只解析实际的数字字符串?
- deep-learning - 关于Julia语言的深度学习快速入门(Knet.jl)
- google-play - PWA builder:如何使用 Android Package Options 更新现有应用程序
- c# - 当 SQL Server 数据库表单元格在一段时间后仍为空时,通知用户的最佳方法是什么?
- android - 应用程序因致命信号而崩溃 - /apex/com.android.runtime/lib64/libart.so 和 /system/lib64/libhwui.so
- python - 将 pip requirements.txt 转换为 conda?
- javascript - Material UI useMediaQuery 导致故障/跳跃
- swift - Macos WKWebView 只获取部分内容
- asp.net - ASP.NET Web 应用程序的单一视图不会在 Azure 开发环境中加载