我使用特定的数据库助手并收到错误消息“调用数组上的成员函数 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()
。
希望这对您有所帮助。
美好的一天; 我创建了数据库助手以减少 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()
。
希望这对您有所帮助。