Проблема заключалась в кавычках на именах полей numero
и razon_social
\App\Models\Clientes::selectRaw( " CONCAT('numero', ' ', 'razon_social') as nombre, id " )->lists('nombre', 'id')->all();
Вам нужно использовать их так:
\App\Models\Clientes::selectRaw( " CONCAT(numero, ' ', razon_social) as nombre, id " )->lists('nombre', 'id')->all();
НЕТ
Для этого и нужен RAII, пусть деструктор сделает это работа. Нет смысла закрывать его вручную, но это не C ++, а программирование на языке C с классами.
Если вы хотите закрыть файл до конца функции, вы всегда можете использовать вложенную область видимости.
В стандарте (27.8.1. 5 Шаблон класса basic_ifstream), ifstream
должен быть реализован с элементом basic_filebuf
, содержащим фактический дескриптор файла. Он сохраняется как член, поэтому при разрушении объекта ifstream он также вызывает деструктор в basic_filebuf
. А из стандарта (27.8.1.2) этот деструктор закрывает файл:
virtual ˜basic_filebuf ();
Effects: Уничтожает объект класса
basic_filebuf
, Вызовыclose ()
.
Нет, это делается автоматически деструктором ifstream
. Единственная причина, по которой вы должны вызывать его вручную, заключается в том, что экземпляр fstream
имеет большую область видимости, например, если он является переменной-членом экземпляра класса долгоживущих классов.
Вам нужно закрыть файл?
НЕТ
Стоит ли закрывать файл?
Зависит.
Вас волнуют возможные ошибки, которые могут возникнуть, если файл не закрывается правильно? Помните, что вызовы close устанавливают (failbit)
, если он терпит неудачу. Деструктор автоматически вызовет close ()
для вас из-за RAII , но не оставит вам способа проверить бит сбоя, поскольку объект больше не существует.