2016-04-07 1 views
1

は、常に私は、MySQLで、この次のコードを使用

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

すべての列を通じて見つける方法?

これはPhalcon ORMですばやく可能ですか?

+1

Phalconが最高のパフォーマンスを目指しているので、ちょっと、そのような解決策はありません。しかし、コミュニティから素晴らしい解決策があります:https://github.com/stanislav-web/Searcher注:私はそれを使用していませんが、ソースファイルを見て、それは有望です。またここにはPhalconのおいしさの素敵なリストがあります:https://github.com/sergeyklay/awesome-phalcon –

+0

@NikiMihaylovあなたはStackowerflowとphalconフォーラムで一緒に活動しています:) –

+1

Phalconの愛を広げてください。多くの人がこの素晴らしいフレームワークについて知っておくべきです:) –

答えて

1

@niki_mihaylovで上で述べたように、Phalconで利用可能な解決策はありません。ただし、モデルのすべての列を取得して、各列にwhere句を追加することができます。

テーブルのカラム数と検索対象の種類によっては、パフォーマンスが低下することがあります。

[制御]

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

[モデル]

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()は、モデルで定義されたcolumnMapを指します。より良い解決策は、検索したいすべての列を持つカスタム配列を定義することです。検索可能な列の量が制限され、パフォーマンスが向上する可能性があります。

関連する問題