2016-04-14 10 views
0

Arama imkanmı yükseltmeye çalışıyorum, şu anda mevcut olan tüm becerileri listeliyorum ve bir kez tıkladığınızda bu yetenekle birlikte handymens'i arıyor. Şimdi bir arama kutusu oluşturmak istiyorum, böylece kullanıcı herhangi bir şey girdikten sonra bu yetenekle tüm handymensleri arayacak ve gösterecek bir şey girdikten sonra. örneğin 'p', 'Tesisatçı' geri dönecekti. Ama bununla çok uğraşıyorum, lütfen başka bir dosya veya veritabanının eklenmesi gerekiyorsa lütfen bana bildirin.laravel'de arama tesisi oluşturma

Görünüm:

<h1>Here you can search</h1> 
    <form action="{{url('details')}}" method="POST"> 
    {{ csrf_field() }} 
     <div> 
      <input type='text' name='skill'/> 
     </div> 
    <input type="submit" name="submitBtn" value="Search"> 
    </form> 
    @foreach ($skills as $skill) 
     <p> 
      <a href="{{url('details/'.$skill->id)}}">{{$skill->skill}}</a>   
     </p> 

    @endforeach 
@endsection 

Denetleyici:

function search() 
{ 
    $skills = Skill::all(); 
    return view('layouts/search',['skills' => $skills]); 
} 
function details($skillId) 
{ 
$skill = Skill::find($skillId); 
$handymen = $skill->handymen; 
$skill = Input::get('skill'); 
$result = Handyman::where('skills','LIKE','%'.$skill.'%') 
      ->orWhere('email','LIKE','%'.$skill.'%') 
      ->get(); 
return view('layouts/details', ['skill' => $skill,'handymen' => $handymen]); 
} 

sıhhı veritabanı:

<?php 

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

class CreateHandymenTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
public function up() 
{ 
    Schema::create('handymen', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('first_name'); 
     $table->string('last_name'); 
     $table->string('street'); 
     $table->string('postcode'); 
     $table->string('town'); 
     $table->string('skills'); 


     $table->integer('job_id')->unsigned(); 
     $table->foreign('job_id')->references('id')->on('jobs')->onDelete('cascade'); 


     $table->timestamps(); 
     }); 
    } 
/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    Schema::table('handymen', function (Blueprint $table) { 
     $table->dropForeign('handymen_job_id_foreign'); 
     $table->dropColumn('job_id'); 
    }); 
    } 
} 

Beceri tablo:

<?php 

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

class CreateSkillsTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('skills', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('skill'); 
      $table->timestamps(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::drop('skills'); 
    } 
} 

Kavşak tablosu:

<?php 

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

class CreateHandymanSkillTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('handyman_skill', function (Blueprint $table) { 
      $table->integer('handyman_id')->unsigned(); 
      $table->integer('skill_id')->unsigned(); 
      $table->timestamps(); 
     }); 
     Schema::table('handyman_skill', function ($table) { 
      $table->primary(['handyman_id', 'skill_id']); 
      $table->foreign('handyman_id')->references('id')->on('handymen')->onDelete('cascade'); 
      $table->foreign('skill_id')->references('id')->on('skills')->onDelete('cascade'); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::drop('handyman_skill'); 
    } 
} 

cevap

0

Bu sorunuza doğrudan bir cevap olmayabilir ama arama hizmetleri için ElasticSearch gibi bir şey kullanarak öneriyoruz.
Birkaç yüz bin girdim olduğu durumumda gerçekten harika çalışıyor ve kurulumu oldukça kolaydır.
Ayrıca, Elasticquent adlı bir kütüphanenin Larastic'te kullanımı daha kolay Elasticsearch yapmak var.

+0

Bu tür hizmetlerin kullanımı olmadan işleri yapmak istediğim şeyleri basit tutmaya çalışıyorum –

İlgili konular