Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-自定义搜索_Php_Database_Laravel_Search_Input - Fatal编程技术网

Php Laravel-自定义搜索

Php Laravel-自定义搜索,php,database,laravel,search,input,Php,Database,Laravel,Search,Input,我对我的小型车项目进行了自定义搜索,现在我有两个问题。让我首先显示我的代码: 这是我的SearchController: <?php namespace App\Http\Controllers; use App\Car; use DB; use Illuminate\Http\Request; class SearchController extends Controller { // ovo je search controller public funct

我对我的小型车项目进行了自定义搜索,现在我有两个问题。让我首先显示我的代码: 这是我的
SearchController

<?php

namespace App\Http\Controllers;
use App\Car;
use DB;

use Illuminate\Http\Request;

class SearchController extends Controller
{

    // ovo je search controller


    public function index(){
        $cars = Car::all();
        return view('searchcreate')->with('cars', $cars);
    }

    public function blogs(Request $request){

        $from = $request->input('from');
        $to = $request->input('to');
        $search = $request->input('fuel');

        $cars = DB::table('cars')
                    ->where('brand', '=', $request->input('brand'))
                    ->where('model', '=', $request->input('model'))
                    ->where('fuel', '=', $request->input('fuel'))
                    ->where('gear', '=', $request->input('gear'))
                    ->whereBetween('price', [$from, $to])
                    ->get();

        return view('search')->with('cars', $cars);
    }
}
所以我的两个问题是:

第一个问题是,我的所有搜索输入都是必需的,如果用户键入的只是品牌或燃料,我需要向他显示所有具有特定品牌或燃料的汽车

第二个问题是我的
档位输入
,它是用户在创建car post时选择的数组。现在,如果用户想要搜索某辆汽车,比如说,在搜索时只需要ABS,那么用户需要准确地检查汽车立柱上的装备。我需要我的搜索,以找到任何汽车后,只有检查齿轮,所以没有必要检查确切的齿轮。 这两个问题的解决方案是什么

编辑: 我的
汽车迁移

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCarsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('cars', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('brand');
            $table->string('model');
            $table->string('fuel');
            $table->string('gear');
            $table->string('price');
            $table->integer('user_id');
            $table->dateTime('refresh');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('cars');
    }
}
和我的
create.blade.php
for cars表:

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">Create car post
                </div>

                <div class="card-body">
                    {!! Form::open(['action' => 'CarsController@store', 'method' => 'POST']) !!}
                        <div class="column">
                            <label for="brand">Brand:</label></br>
                            <select class="form-control" id="input" name="brand" onchange="random_function()">
                                <option value="" disabled selected>Select your option</option>
                                <option value="Volkswagen">Volkswagen</option>
                                <option value="BMW">BMW</option>
                                <option value="Audi">Audi</option>
                            </select>
                        </div>
                        <br>
                        <div class="column">
                            <label for="model">Model:</label></br>
                            <select class="form-control" id="output" name="model">

                            </select>
                        </div>
                        <br>
                        <div class="column">
                            <label for="fuel">Fuel:</label></br>
                            <select class="form-control" name="fuel">
                                <option value="diesel">Diesel</option>
                                <option value="gasoline">Gasoline</option>
                            </select>
                        </div>
                        <br>
                        <div class="column">
                            <label for="gear">Gear:</label></br>
                            <input name="gear[]" type="checkbox" placeholder="" value="ABS">ABS
                            <input name="gear[]" type="checkbox" placeholder="" value="CL">Child lock
                            <input name="gear[]" type="checkbox" placeholder="" value="navigation">Navigation
                            <input name="gear[]" type="checkbox" placeholder="" value="isofix">Isofix
                        </div>
                        <br>
                        <div class="column">
                            <label for="price">Price:</label></br>
                            <input name="price" type="text" placeholder="" class="form-control">
                        </div>
                        <br><br>
                        <button type="submit" class="btn btn-primary">
                            Submit
                        </button>
                    {!! Form::close() !!}
                </div>
            </div>
        </div>
    </div>
</div>
@endsection
@extends('layouts.app'))
@节(“内容”)
创建汽车邮政
{!!Form::open(['action'=>'CarsController@store“,”方法“=>”发布“])
品牌:
选择您的选项 大众 宝马 奥迪
型号:

燃料:
柴油机 汽油
齿轮:
防抱死制动系统 儿童锁 航行 Isofix
价格:


提交 {!!Form::close()!!} @端部
您应该将查询分为单独的搜索部分,因为您需要3种不同类型的where子句-标准
where
where
(对于gears数组)和
where
(如果设置了价格)

这应该起作用:

$carQuery = DB::table('cars');

// standard where fields
foreach ($request->only(['brand', 'model', 'fuel']) as $term => $value) {
    if (empty($value)) {
        continue;
    }
    $carQuery->where($term, $value);
}

// gear is one of gears array values
if ($gears = $request->get('gear')) {
    $carQuery->whereIn('gear', $gears);
}

// between a price from/to the values set
if (
    $from = $request->input('from')
    && $to = $request->input('to')
) {
    $carQuery->whereBetween('price', [$from, $to]);
}

$cars = $carQuery->get();

什么列类型是gear,因为它是一个多选选项?@mrhn它是varcharSo,所以它只是一个数组的搜索输入?我们在这里是bcs,我们想提供帮助,但代码编写服务也不是这样。。。你试过什么?@是的,搜索输入数组和
存储功能
内爆
先生,现在只要选择品牌和型号,或者只要选择价格从-到即可。但对于gears,如果我只选中一个复选框,它仍然不会显示任何内容。。请帮助,对于选择了不止一个档位的汽车,它不显示任何内容,它只显示选择了一个档位的汽车,如果我为搜索选择的档位输入my
$car->gear
是多选,
数组
,我需要显示所有汽车。也许是这样的吧?我在价格上有一个小错误,它显示了所有的汽车,无论我输入的是什么价格,
$from
$to
输入你的汽车表数据是什么样子的?
@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">Create car post
                </div>

                <div class="card-body">
                    {!! Form::open(['action' => 'CarsController@store', 'method' => 'POST']) !!}
                        <div class="column">
                            <label for="brand">Brand:</label></br>
                            <select class="form-control" id="input" name="brand" onchange="random_function()">
                                <option value="" disabled selected>Select your option</option>
                                <option value="Volkswagen">Volkswagen</option>
                                <option value="BMW">BMW</option>
                                <option value="Audi">Audi</option>
                            </select>
                        </div>
                        <br>
                        <div class="column">
                            <label for="model">Model:</label></br>
                            <select class="form-control" id="output" name="model">

                            </select>
                        </div>
                        <br>
                        <div class="column">
                            <label for="fuel">Fuel:</label></br>
                            <select class="form-control" name="fuel">
                                <option value="diesel">Diesel</option>
                                <option value="gasoline">Gasoline</option>
                            </select>
                        </div>
                        <br>
                        <div class="column">
                            <label for="gear">Gear:</label></br>
                            <input name="gear[]" type="checkbox" placeholder="" value="ABS">ABS
                            <input name="gear[]" type="checkbox" placeholder="" value="CL">Child lock
                            <input name="gear[]" type="checkbox" placeholder="" value="navigation">Navigation
                            <input name="gear[]" type="checkbox" placeholder="" value="isofix">Isofix
                        </div>
                        <br>
                        <div class="column">
                            <label for="price">Price:</label></br>
                            <input name="price" type="text" placeholder="" class="form-control">
                        </div>
                        <br><br>
                        <button type="submit" class="btn btn-primary">
                            Submit
                        </button>
                    {!! Form::close() !!}
                </div>
            </div>
        </div>
    </div>
</div>
@endsection
$carQuery = DB::table('cars');

// standard where fields
foreach ($request->only(['brand', 'model', 'fuel']) as $term => $value) {
    if (empty($value)) {
        continue;
    }
    $carQuery->where($term, $value);
}

// gear is one of gears array values
if ($gears = $request->get('gear')) {
    $carQuery->whereIn('gear', $gears);
}

// between a price from/to the values set
if (
    $from = $request->input('from')
    && $to = $request->input('to')
) {
    $carQuery->whereBetween('price', [$from, $to]);
}

$cars = $carQuery->get();