Kohana 3 ORM - 用括号对条件进行分组
-
26-09-2019 - |
题
我正在尝试通过 ORM 运行查询,如下所示:
SELECT * from table where (fname like 'string%' or lname like 'string%')
AND (fname like 'string2%' or lname like 'string2%');
这是我到目前为止所拥有的:
$results = ORM::factory('profiles');
foreach ($strings as $string) {
$result->where('fname', 'like', "$string%");
$result->or_where('lname', 'like', "$string%");
}
但这并没有考虑到括号。有任何想法吗?
解决方案
找到了答案。
它与Kohana中的where_open()和where_close()方法进行。
其他提示
这对我来说可以 。
ORM 代码示例
$musicslist = ORM::factory('user_music')
->where_open()
->where('title', 'like', '%' . $search . '%')
->or_where('album', 'like', '%' . $search . '%')
->or_where('artist', 'like', '%' . $search . '%')
->where_close()
->and_where('app_userid','=', $userid)
->find_all();
它将创建 SQL 查询
SELECT `user_musics`.* FROM `user_musics` WHERE (`title` LIKE '%as%' OR `album` LIKE '%as%' OR `artist` LIKE '%as%') AND `app_userid` = '21'
无法获取的代码格式在注释工作 - 只是觉得我一个简单的例子增加的情况下,任何人的答案都会碰到它:
$query = DB::select()
->from('some_table')
->where_open()
->where('column_one', '=', 1)
->or_where('column_two', '=', 2)
->where_close();
会产生以下SQL:
SELECT * FROM some_table
WHERE (column_one = 1 OR column_two = 2);
不隶属于 StackOverflow