2016-04-07 33 views
1

daima ben mysql bu şu kodu kullanın:Phalcon ORM'deki tüm sütunlarda arama yapmanın en iyi yolu?

SELECT * FROM myobject 
WHERE MATCH(`name`, `foo`, `bar`) AGAINST ('$search') IN BOOLEAN MODE 

phalcon ORM olarak:

myobject::find([ 
      "columns” => "id, name”, 
      "conditions" => "name LIKE ?1 OR foo LIKE ?1 OR bar LIKE ?1 ", 
      "bind"  => [1 =>$search] 
      ]); 

Nasıl tüm sütunların üzerinden bulmak için?

Phalcon ORM'de bu hızlı bir şekilde mümkün mü?

+1

Hey, Phalcon en iyi performansı hedeflediğinden beri böyle bir çözüm yok. Ancak topluluktan güzel bir çözüm var: https://github.com/stanislav-web/Searcher Not: Kullanmıyorum ama kaynak dosyaları inceledim ve umut verici görünüyor. Ayrıca burada Phalcon goodies güzel bir listesi: https://github.com/sergeyklay/awesome-phalcon –

+0

@NikiMihaylov sen Stackowerflow ve phalcon forumda birlikte Aktif :) –

+1

Phalcon aşk Yayılma. Daha fazla insan bu harika çerçeveyi bilmeli :) –

cevap

1

Yukarıda @niki_mihaylov tarafından belirtildiği gibi, Phalcon'da hazır bir çözüm bulunmamaktadır. Bununla birlikte, tüm model sütunlarını yakalayabilir ve her sütun için bir where tümceyi ekleyebilirsiniz.

Tablonuzun kaç sütun içerdiğine ve ne tür bir şey aradığınıza bağlı olarak, performansta düşüş olabilir.

[kontrol]

$result = myobject::searchColumns($search); 

[modeli]

public static function searchColumns($search) 
{ 
    $query = self::query(); 

    foreach (self::columnMap() as $column) { 
     $query->orWhere($column . ' LIKE :search:'); 
    } 

    $query->bind(['search' => '%' . $search . '%']); 
    return $query->execute(); 
} 

self::columnMap() için modelinde tanımlanan columnMap belirtmektedir. Daha iyi bir çözüm, aramak istediğiniz tüm sütunları içeren özel bir dizi tanımlamak olabilir. Bu sayede aranabilir sütunların miktarını ve muhtemelen performans artışını sınırlandırır.

İlgili konular