2015-02-09 3 views
0

был копаем довольно долго, у меня не так много кода ... :( Я хочу добавить механизм, который будет оценивать должности на моем сайте по результатам оценки/дата созданияLaravel orderby Оценка/Дата (как оценка)

Поэтому в основном то, что мне нужно, это запрос, который получает post.created_at - (минус ) TIME (теперь), как VALUE * и чем на порядок по бальной/VALUE * DESC

До сих пор мне удалось упорядочить по времени/оценка

$posts = Post::orderBy('score', 'DESC')->orderBy('created_at', 'DESC')->paginate(12);

+1

Вам нужно объяснить, что не так с тем, что вы сделали до сих пор. В частности, почему будет вычитаться фиксированное значение (т. Е. Сейчас) из каждого created_at, что вы хотите сделать? Насколько я могу судить по описанию, он не должен менять порядок сортировки. –

+1

Теперь у меня есть простой порядок, который предпочитает оценку за день, я хочу создать способ ранжирования на моем сайте, который предпочтет новые сообщения, но старшие сообщения высокого ранга будут также видны на первой странице. Другими словами, закажите таблицу по одному расчетному счету/времени (как оценка) = RANK –

+1

Получил это - собирался предложить посмотреть на Raw Exions, но похоже, что вы получили ответ на этот эффект ниже. –

ответ

2

Вы можете использовать функцию DB :: сырец(), чтобы создать свой счет ранжирования, а затем использовать его в вашем методе OrderBy.

POST::select(DB::raw('(score/(created_at -NOW())) as "ordering_value", other, columns'))->orderBy("ordering_value", "desc"); 

И я думаю, что вы хотите, чтобы получить NOW() - created_at возраст поста.

+0

работает как шарм! моя единственная проблема, которая не связана с этим вопросом, заключается в том, как я должен делать эту работу с моими красноречивыми отношениями? :( –

+0

Вы можете добавить предложение, когда вы определяете свои отношения. Что-то вроде: return $ this-> hasMany ('stuff') -> orderBy ('Foo'); – Needpoule

+0

Я обязательно посмотрю на него, спасибо ! :) Уже исправлено это с красноречивым selectRaw(); –

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