我正在寻找以下在Idiorm和巴黎的SQL等价物:
SELECT * FROM table WHERE (regex=0 AND col=_match_) OR (regex=1 AND _match_ REGEXP col)
LIMIT 1
关注Idiorm&巴黎声明仅匹配col=_match_
:
Idiorm:
$row = ORM::for_table('table')
->where_equal('col', '_match_')
->find_one()
巴黎:
MyModel::where('col', '_match_')->find_one()
答案 0 :(得分:3)
句子where_any是解决方法 示例:
$myModel = ORM::for_table('table')
->where_any_is(array(
array('regex'=> 0,'col' => 'match'),
array('regex'=> 1,'col' => '_match_')))
->limit(1)->find_many();
请参阅过滤查询的文档:https://idiorm.readthedocs.org/en/latest/querying.html#filtering-results
答案 1 :(得分:1)
阅读文档和代码后,似乎Idiorm / Paris不支持该功能。所以,我们有两个选择:
使用where_raw()
方法,通过这种方式,我们将where子句作为字符串直接传递给Idiorm。
通过设置where_condition()
向Idiorm ORM类添加一个新方法,将$ value与$ column_name匹配,否则,条件(将$ column_name与$ value匹配)是正常的)。
$reverse = true