2015-06-22 2 views
1

у меня есть следующие настройки таблицы (только, чтобы объяснить мою проблему здесь):Отличается в Laravel ORM?

qid | value | created_at 
1  1  2014-01-01 00:10 
1  2  2014-01-01 00:12 
2  231  2014-01-01 00:10 
3  hello 2014-01-01 00:10 

Я хотел бы получить массив с отчетливым QIDS, заказ по created_at DESC.

Так массив должен выглядеть (только значение, например):

[2, 231, hello] 

я нужен «Raw Query, с отчетливым на колонке QID» Do - или есть другой способ, с Laravel5 методами ORM?

ответ

2

В этом случае вы можете добавить groupby на qid для достижения этого результата. Включите заказ, чтобы убедиться, что вы получаете нужный qid.

например.

->groupBy('qid') 
+0

Спасибо! Я использую сейчас: $ Answers = Answer :: where ('task_uuid', $ taskuuid) -> orderBy ('created_at', 'desc') -> groupBy ('question_uuid') -> get(); - но я всегда получаю первое значение, а не «самое новое» - так что выглядит так, что он игнорирует предложение created_at. – derdida

+2

Если это не сработает для вас, вам может потребоваться http://stackoverflow.com/questions/18159465/how-to-order-grouped-results-using-eloquent –

+0

oh спасибо, я попробую это! Кажется, что мне нужно использовать метод необработанных запросов. – derdida

4

Вам нужно заказать по created_at и затем группе qid.

Answer::orderBy('created_at', 'desc')->groupBy('qid')->get(); 
+0

Спасибо! Я использую сейчас: $ Answers = Answer :: where ('task_uuid', $ taskuuid) -> orderBy ('created_at', 'desc') -> groupBy ('question_uuid') -> get(); - но я всегда получаю первое значение, а не «самое новое» - так что выглядит так, что он игнорирует предложение created_at. – derdida

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