2016-03-15 108 views
-1

我有一個系統,使用連接兩個數據庫的Laravel構建,其中一個使用mysql,另一個使用mssql。我的默認連接MySQL的:Laravel在驗證器中更改連接無法正常工作

'default' => 'mysql', 

'mysql' => [ 
     'driver' => 'mysql', 
     'host'  => 'localhost', 
     'database' => 'qdf_api', 
     'username' => 'root', 
     'password' => '', 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
    ], 

'sqlsrv' => [ 
     'driver' => 'sqlsrv', 
     'host'  => '192.168.3.248,51433', 
     'database' => 'sample_test', 
     'username' => 'joene', 
     'password' => 'password', 
     'charset' => 'utf8', 
     'prefix' => '', 
    ], 

然後我的控制器:

public function store(Request $request) 
{ 
    Validator::extend('unique_multiple', function ($attribute, $value, $parameters) 
    { 
     // Get table name from first parameter 
     $table = array_shift($parameters); 

     // Build the query 
     $query = DB::table($table); 

     // Add the field conditions 
     foreach ($parameters as $i => $field) 
      $query->where($field, $value[$i]); 

     // Validation result will be false if any rows match the combination 
     return ($query->count() == 0); 
    }); 


    $file = Input::file('file'); 
    $count = 0; 

    Excel::load($file, function($reader) use ($count) { 

     $results = $reader->get()->toArray(); 
     // Set connection to sqlsrv 
     $verifier = App::make('validation.presence'); 
     $verifier->setConnection('sqlsrv'); 

     foreach ($results as $key => $value) { 

      $validator = Validator::make(
       // Validator data goes here 
       array(
        'unique_fields' => array($value['telephone'], $value['columnheadername']) 
       ), 
       // Validator rules go here 
       array(
        'unique_fields' => 'unique_multiple:Deliveries,Telephone,ColumnHeaderName', 
        'file' => 'required' 
       ) 
      ); 

      $validator->setPresenceVerifier($verifier); 


      if ($validator->fails()) 
      { 
       return Redirect::to('delivery/create')->withErrors($validator); 
      } 
      else 
      { 
       $deliveries = new Delivery(); 
       $deliveries->Title     = $value['title']; 
       $deliveries->Firstname    = $value['firstname']; 
       $deliveries->Surname    = $value['surname']; 
       $deliveries->Address1    = $value['address1']; 
       $deliveries->Address2    = $value['address2']; 
       $deliveries->Address3    = $value['address3']; 
       $deliveries->Address4    = $value['address4']; 
       $deliveries->Town     = $value['town']; 
       $deliveries->County     = $value['county']; 
       $deliveries->Postcode    = $value['postcode']; 
       $deliveries->Telephone    = $value['telephone']; 
       $deliveries->Email     = $value['email']; 
       $deliveries->AgeBracket    = $value['agebracket']; 
       $deliveries->Gender     = $value['gender']; 
       $deliveries->Filename    = $value['filename']; 
       $deliveries->CalledDate    = $value['calleddate']; 
       $deliveries->ColumnHeaderName  = $value['columnheadername']; 
       $deliveries->Answer1    = $value['answer1']; 
       $deliveries->Answer2    = $value['answer2']; 
       $deliveries->Answer3    = $value['answer3']; 
       $deliveries->Answer4    = $value['answer4']; 
       $deliveries->Answer5    = $value['answer5']; 
       $deliveries->HomeOwner    = $value['residentialstatus']; 
       $deliveries->MaritalStatus   = $value['maritalstatus']; 
       $deliveries->WorkStatus    = $value['incomebracket']; 
       if($deliveries->save()){$count++;} 
      } 
     } 

     Session::flash('alert-success', 'Data Uploaded Successfully! '.$count.' leads uploaded'); 
    }); 

     return Redirect::to('delivery/create'); 
} 

你可以看到行:

$verifier = App::make('validation.presence'); 
$verifier->setConnection('sqlsrv'); 

,還是把這個錯誤:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'qdf_api.deliveries' doesn't exist (SQL: select count(*) as aggregate from `Deliveries` where `Telephone` = 01482828164 and `ColumnHeaderName` = EDF_3320) 

交付表在我的sample_test數據庫是在sqlsrv連接。這就是爲什麼我切換到sqlsrv連接,但似乎不工作?

回答

0

兩個連接都沒有相同的數據庫名稱,並且您可能在.env文件中添加了qdf_api數據庫名稱。因爲你的錯誤。

+0

嗨。我的env沒有qdf_api。是的,我有兩個連接的數據庫。我試圖在一個特定的數據庫連接中直接進行驗證,但現在這個連接不起作用。 – jackhammer013

+0

在你.ENV文件,是什麼在前面'設置DATABASE'關鍵 –

+0

DB_HOST =本地主機 DB_DATABASE =小時 DB_USERNAME =根 DB_PASSWORD = – jackhammer013