2013-12-06 2 views
1

Это работает и показывает результирующий набор:Laravel странного PDO fetchMode вопрос

$mainFeatures = new Mainfeature; 
$mainFeatures->getConnection()->setFetchMode(PDO::FETCH_KEY_PAIR); 
$main = $mainFeatures::get(array('id','data'))->toArray(); 
dd($main); 

Но если я пытаюсь вернуться с результирующим набором:

return View::make('orders.create') 
    ->with('features', Feature::with('Subfeature')->get()->toArray()) 
    ->with('mainFeatures', $main); 

Это дает ошибку:

SQLSTATE[HY000]: General error: PDO::FETCH_KEY_PAIR fetch mode requires the result set to contain extactly 2 columns. (SQL: select * from `features`) (Bindings: array ()) 

Не знаю, откуда находится select * from features ...

+1

Не используется Laravel before, но 'get()' наверняка произведет 'SELECT *', тогда как 'get (array ('id', 'data'))' (как в вашем первом примере) SELECT id, data', который вы хотите для 'PDO :: FETCH_KEY_PAIR' – Clive

+0

@ Посетите спасибо. –

+0

@Clive хотите посмотреть на другие проблемы, которые возникают с PDO? http://stackoverflow.com/questions/20434522/specify-columns-for-pdofetch-key-pair Спасибо. –

ответ

1

Я пропустил то, что я менял режим выборки для connection, а не только class Mainfeature. Поэтому мне пришлось перезагрузить его.

$mainFeatures = new Mainfeature; 
    $mainFeatures->getConnection()->setFetchMode(PDO::FETCH_KEY_PAIR); 
    $main = $mainFeatures::get(array('id','data'))->toArray(); 
    //dd($h); 
    //dd($main); 

    $features = new Feature; 
    $features->getConnection()->setFetchMode(PDO::FETCH_CLASS); 

    return View::make('orders.create') 
     ->with('features', $features::with('Subfeature')->get()->toArray()) 
     ->with('mainFeatures', $main); 

Кредит идет к Клайву, указывая мне в правильном направлении.

Смежные вопросы