I've been searching for a while for a solution here but no luck. I have a model named Currency which extends eloquent.
class Currency extends Eloquent {
protected $connection = 'currency';
protected $table = 'dbo.sfCXDetail';
public $timestamps = false;
public function monthlyTransactions(){
return Currency::select(array(DB::raw('COUNT(trx_number) AS Transactions'), DB::raw('MONTH(update_stamp) as TransactionsMonth')))
->whereBetween(DB::raw('DATEPART(YYYY, update_stamp)'), array(2012,2012))
->groupBy(DB::raw('YEAR(update_stamp)'))
->groupBy(DB::raw('MONTH(update_stamp)'))
->orderBy(DB::raw('YEAR(update_stamp)'))
->orderBy(DB::raw('MONTH(update_stamp)'))
->get();
}
}
The problem is, DB::raw uses the default database inside the database config file, so when I try using:
Currency::raw()
I get an error
strtolower() expects parameter 1 to be string, object given
The database I'm using can't be used as the default database. How do I use the DB::raw method with the current database in use inside the model?
This query works without error when I set the default database to 'currency', but not if I set it to use my local default mysql database.
This is in my DB config file:
'currency' => array(
'driver' => 'sqlsrv',
'host' => 'xx',
'database' => 'xx',
'username' => 'xx',
'password' => 'xx',
'prefix' => '',
),