我总是在mysql中使用以下代码:
SELECT * FROM myobject
WHERE MATCH(`name`, `foo`, `bar`) AGAINST ('$search') IN BOOLEAN MODE
在Phalcon ORM中:
myobject::find([
"columns” => "id, name”,
"conditions" => "name LIKE ?1 OR foo LIKE ?1 OR bar LIKE ?1 ",
"bind" => [1 =>$search]
]);
如何查找所有列?
Phalcon ORM是否可以快速实现这一目标?
答案 0 :(得分: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
。更好的解决方案可能是定义一个包含您要搜索的所有列的自定义数组。因此限制了可搜索列的数量,并可能提高性能。