2016-11-22 3 views
0

Я пытался получить некоторые необработанные запросы, работающие в laravel 4.2. Для тестирования я сократил запрос до следующего. Создание списка результатов не работает:Создание списка из DB :: select in laravel 4.2

$latest_exams = DB::select("SELECT * from tb_exams where id = '21953120'"); 
$latest_exams_ids = $latest_exams->lists('id'); 

Окончательный запрос имеет ряд экзаменов, и я хотел бы, чтобы в конечном итоге с массивом из идентификаторов этих экзаменов. Любые идеи или предложения?

Редакция:

Редактировать: чтобы уточнить, похоже, что это создание списка, вызывающего ошибку. этот упрощенный запрос работает нормально. Я могу сбрасывать результат на страницу, и это так, как ожидалось. Когда я добавляю строку «списки», она ломается. Я включил запрос в случае, если что-то связано с тем, что список не работает.

+1

запрос вернет только один экзамен, если он существует !! – Maraboc

+1

В дополнение к моему предыдущему комментарию делайте jast как '' $ last_exams = DB :: select ("SELECT * from tb_exams) -> get();' и не забывайте ** -> get() ** :) – Maraboc

+0

Извините, если я не был чист. По какой-то причине, похоже, это составление разбитого списка. Запрос прекрасен и представляет собой упрощенную версию «реальной», которая является сложной, чтобы удалить ее сложность как возможная проблема. – Kevin

ответ

2

Вместо использования $latest_exams = DB::select("SELECT * from tb_exams where id = '21953120'"); который будет возвращать только один результат

where id = 21953120 

Сначала я бы посоветовал использовать Красноречивый конструктор запросов (Используйте вашу модель, а не писать SQL запрос самостоятельно)

$latest_exams = ModelName::all(); 

Вернет массив всех экзаменов. Если вы по-прежнему используете предыдущий SQL-запрос, удалите условие where, чтобы получить все экзамен в виде массива.

+0

Спасибо за ответ. У меня есть модель экзамена. У меня есть этот запрос в качестве примера того, как я это делаю. SELECT, который у меня есть здесь, - очень упрощенный запрос. сложный, пытаясь получить даты MAX, группу и т. д. Я использую этот упрощенный запрос, потому что нет причин, по которым он должен быть разорван. Он захватывает один экзамен, чтобы я мог устранить сложный запрос в качестве проблемы. Это список $ last_exams_ids = $ last_exams-> ('id'); "это, по-видимому, преломляет вещи. – Kevin

+0

Привет, @K evin вы могли бы определить результат $ last_exams? afaik, [он должен быть массивом] (https://laravel.com/api/4.2/Illuminate/Database/Connection.html#method_select) .. у меня есть сомнения, была ли у него вообще функция. попытайтесь опубликовать свой ошибка или 'dd ($ last_exams)'. Извините, но я редко использую 'DB :: Select()'. –

1

Чтобы добавить несколько вариантов ответа, я решил написать свое. Как отметил Мишель, вы можете сделать model для экземпляра таблицы и запросить через построитель запросов Eloquent. Для неограниченного запроса вы можете использовать метод all в модели. $latest_exams = ModelName::all('id');

В качестве альтернативы, вы можете сохранить ваш необработанный SQL таким образом, как на doc described: $latest_exams = DB::select("select id from from tb_exams");

забудьте выбрать только идентификатор. Бьюсь об заклад, вы поддерживаете некоторые старые проекты (Laravel теперь поражает версию 5.3). Tbh, сначала прочитайте документы, выкопайте их до документации api или даже самого источника. Счастливое кодирование!

+0

Спасибо за ответ. Как я уже говорил в ответ Мишелю. Запрос является упрощенной версией, чтобы устранить ее сложность как источник проблемы. Но я хотел сохранить тот же «тип» запроса, т. Е. Необработанный SQL-запрос. – Kevin