如何在执行 MYSQL 查询之前检查条件 (Laravel 5)

How to check condition before executing MYSQL query (Laravel 5)

我想检查是否为空 $i$search

我收到错误消息

Object of class Illuminate\Database\Query\Builder could not be converted to string

当我使用这个功能时

static function getListUserGroup($id = "", $search = "", $paginate = NULL)
{
    $sql = "";
    if (!empty($id))
    {
        $sql.= "->where('id', {$id})";
    }

    if (!empty($search))
    {
        $sql.= "->where('name', 'LIKE', {$search})";
    }

    if (!is_null($paginate) && !empty($paginate))
    {
        $sql.= "->paginate({$paginate})";
    }

    $results =  DB::table('core_user_roles').$sql;

    return $results;
}

您真的不能只是将 Laravel 的数据库函数转换为字符串并期望它那样工作。 Laravel 的 DB 和 Eloquent 函数是可链接的,所以你可以这样做:.

static function getListUserGroup($id = "", $search = "", $paginate = NULL)
{
    $query = DB::table('core_user_roles');

    if($id) {
        // a slightly cooler syntax for simple wheres
        $query->whereId($id);
    }

    if($search) {
        $query->where('name', 'LIKE', $search);
    }

    if($paginate) {
        $query->paginate($paginate);
    }

    return $query;
}