如何在Laravel 5.2中从附加各种查询的表中获取数据?

如何在Laravel 5.2中从附加各种查询的表中获取数据?,laravel,laravel-5,laravel-5.2,Laravel,Laravel 5,Laravel 5.2,我正试图为我的过滤器附加各种不同的查询,但这里的问题是我的或where条件工作异常,无论我的where条件如何,都会给我结果 我正在下面添加我的控制器: public function earringsFilter(Request $request) { if($request->isMethod('post')) { $data = array_filter($request->all()); $filter = $data['filter'

我正试图为我的过滤器附加各种不同的查询,但这里的问题是我的
或where
条件工作异常,无论我的where条件如何,都会给我结果

我正在下面添加我的控制器:

public function earringsFilter(Request $request)
{
    if($request->isMethod('post')) {
        $data = array_filter($request->all());
        $filter = $data['filter'];
        $jewelleryEarringsData = Jwellery::select('id','name','price','msrp','metal_type','image_url','total_weight','image_2','image_3');
        $earrings = &$jewelleryEarringsData;
        $carat = array();
        $amount = array();
        $metal = array();
        if(isset($data['metal'])){
            $metal = $data['metal'];
            //$earrings->whereIn('metal_type', $metal);
            foreach($metal as $valk){
                $earrings->orWhere('metal_type', 'like', '%'.$valk.'%');
            }
        }
        if(isset($data['amount']['1']) && $data['amount']['1'] !=''){
            $amount = $data['amount'];
            $amt1 = $amount['0'];
            $amt2 = $amount['1'];
            $earrings->whereBetween('price',[$amt1,$amt2]);
        }
        if(isset($data['carat']['1']) && $data['carat']['1'] !=''){
            $carat = $data['carat'];
            $carat1 = $carat['0'];
            $carat2 = $carat['1'];
            $earrings->where('total_weight','>=',$carat1)->where('total_weight','<=',$carat2);
        } 
        $jewelleryEarringsData = $earrings->where('item_type', $filter)->get();
    }
}
公共函数耳环过滤器(请求$Request)
{
如果($request->isMethod('post')){
$data=array_filter($request->all());
$filter=$data['filter'];
$jewelleryEarringsData=Jwellery::select('id'、'name'、'price'、'msrp'、'metal_type'、'image_url'、'total_weight'、'image_2'、'image_3');
$耳环=&$jewelleryEarringsData;
$carat=array();
$amount=array();
$metal=array();
如果(isset($data['metal'])){
$metal=$data['metal'];
//$earlings->其中('metal_type',$metal);
foreach(金属为$valk){
$earlings->orWhere('metal_type'、'like'、'%'。$valk'%);
}
}
如果(isset($data['amount']['1'])和&$data['amount']['1']!=''){
$amount=$data['amount'];
$amt1=$amount['0'];
$amt2=$amount['1'];
$earlings->whereBetween('price',[$amt1,$amt2]);
}
如果(isset($data['carat']['1'])和&$data['carat']['1']!=''){
$carat=$data['carat'];
$carat1=$carat['0'];
$carat2=$carat['1'];

$earlings->where('total_-weight','>=',$carat1)->where('total_-weight','将代码更改为:

foreach ($metal as $valk){
    $earrings = $earrings->orWhere('metal_type', 'like', '%'.$valk.'%');
}
请换衣服

$jewelleryEarringsData = Jwellery::select('id','name','price','msrp','metal_type','image_url','total_weight','image_2','image_3');

并将值重新分配回耳环变量。
希望这对你有所帮助

同时发布表结构、数据和所需的OTUPUT你没有将值赋回耳环变量耶…即使我也有同样的疑问谢谢你的回复,但问题在于orWhere条件。如果我删除或上面附加的查询在哪里工作绝对正常。但是如果我添加或上面的查询在哪里工作无论何处条件如何
$jewelleryEarringsData = Jwellery::select('id','name','price','msrp','metal_type','image_url','total_weight','image_2','image_3')->get();