php - 如何用 Idiorm 语法写这个

标签 php mysql idiorm

MySQL 语法

SELECT users.*, roles.name, departments.name FROM users
INNER JOIN roles ON users.roleId = roles.id
INNER JOIN departments ON users.department = departments.id
WHERE users.roleId = 3 AND (
     users.name LIKE '%%' OR
     users.email LIKE '%%' OR
     users.phone LIKE '%%' OR
     departments.name LIKE '%%' OR
     roles.name LIKE '%%'
)
ORDER BY update-date DESC
LIMIT 0, 10

我尝试用 Idiorm 语法编写此内容,但 WHERE blabla AND (LIKE OR LIKE) 不起作用

 $backRows = ORM::for_table('users')
        ->select(['departments.name', 'roles.name', 'users.*'])
        ->join('roles', array(
            'roles.id', '=', 'users.roleId'
        ))
        ->join('departments', array(
            'departments.id', '=', 'users.department'
        ))
        ->where('users.roleId', 3)
        // don't work ->where_raw('(`users.name` = ? OR `users.email` = ?)', ['%'.$search.'%', '%'.$search.'%'])
        ->limit($body['perPage'])->offset($body['currentPage'] * $body['perPage'] - $body['perPage'])
        ->{ 'order_by_' . $body['order'] }($body['sort'])
        ->findArray();

最佳答案

после 10и часов курения доков заработало вот так:

$backRows = ORM::for_table('users')
    ->select(['departments.name', 'roles.name', 'users.*'])
    ->join('roles', ['roles.id', '=', 'users.roleId'])
    ->join('departments', ['departments.id', '=', 'users.department'])
    ->where_not_equal('users.roleId', 3)
    ->where_raw('(users.name LIKE ? OR users.email LIKE ? OR users.phone LIKE ? OR roles.name LIKE ? OR departments.name LIKE ?)', ['%'.$search.'%', '%'.$search.'%', '%'.$search.'%', '%'.$search.'%', '%'.$search.'%'])
    ->limit($body['perPage'])->offset($body['currentPage'] * $body['perPage'] - $body['perPage'])
    ->{ 'order_by_' . $body['order'] }($body['sort'])
    ->findArray();

关于php - 如何用 Idiorm 语法写这个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43715334/

相关文章:

php - 如何使用 MySQL Left Join 根据另一个表行的 id 获取结果?

php - 为什么在 IIS 上使用 open_basedir 和 PHP 作为 FastCGI?

php 事件记录::2000、1066,不唯一的表/别名: 'category'

php - 按名称计算结果

mysql - 惯用语 (MySQL) - 原始查询 - 显示表类似

PHP 加载数据文件不起作用

php - 使用 php 将抓取的变量插入 mysql 表

Mysql 和 ppoll

php - 在巴黎需要帮助 php 查询

php - 如何在 Idiorm/Paris 中使用自己的 setter/getter?