我使用特定的数据库助手并收到错误消息“调用数组上的成员函数 whereRaw()”

i use specific data base helper and get error message " Call to a member function whereRaw() on array"

美好的一天; 我创建了数据库助手以减少 laravel 框架中的代码, 但是当我在助手中使用函数时,我会收到错误消息 "Call to a member function whereRaw() on array", 这是我的帮助代码

namespace App\Helpers;
    use DB;

    class dBHelper
    {
        /**
         * This functin retrive all data with pagination .
         */

        public static function pagination($dbName,$Tablename,$Condition="",$data)
        {
            $stattment =DB::connection(''.$dbName.'')-> select('select * from  '.$Tablename.' ')
                ->whereRaw(''.$Condition.'', $data)
                ->Paginate(1);

            return $stattment;
        }


    }

这是我的控制器

$dataView['products']=dBHelper::pagination('mysql','products','`status`=? AND `deleted`=?',array(1,1));

问题是 select() 方法实际运行查询。

您的 DB::connection('name') 调用 return 是

的实例
Illuminate\Database\ConnectionInterface

这有一个select方法

/**
 * Run a select statement against the database.
 *
 * @param  string  $query
 * @param  array   $bindings
 * @param  bool  $useReadPdo
 * @return array
 */
public function select($query, $bindings = [], $useReadPdo = true);

如您所见,此处的 return 类型是 array

你最好的选择是调用 table() 方法,这将 return 一个流畅的查询构建器。

/**
 * Begin a fluent query against a database table.
 *
 * @param  string  $table
 * @return \Illuminate\Database\Query\Builder
 */
public function table($table);

所以,要实现你想要的,你的代码应该如下所示。

return DB::connection($dbName)
    ->table($tableName)
    ->select(['*'])
    ->whereRaw($condition, $data)
    ->paginate($count);

这将 return

的实例
\Illuminate\Contracts\Pagination\LengthAwarePaginator

我应该补充一点,paginate(1) 将 return 一个包含 1 条记录的分页列表。如果您只想要一个,请改用 first()

希望这对您有所帮助。