Laravel 5:如何为集合创建自定义属性,然后对其进行排序

use*_*500 2 php sql laravel eloquent laravel-5

我想对模型的结果进行复杂的排序。

例如,我有\App\Classes::where(something),然后我要为每个类添加一个附加属性,然后使用该属性进行排序,即(受https://laracasts.com/discuss/channels/eloquent/is-there中的方法启发任何将属性添加到集合中的对象的方法

$classes = \App\Classes::where(something)
foreach ($classes as &$class) {
        $classes['custom_score'] = some logic that changes per $class;
}
$classes_sorted = $classes->orderBy('custom_score')
Run Code Online (Sandbox Code Playgroud)

但是这段代码给了我

SQL错误:“找不到列:1054'order子句'中的未知列'custom_score'”

我不想为这个custom_score实际写入数据库,因为它会随着每次用户交互而经常且唯一地更改。

有什么好的解决方案?

非常感谢。

Ale*_*nin 5

使用transform()收集方法:

$collection->transform(function($i) {
    $i->custom_score = // Some logic here
    return $i;
});
Run Code Online (Sandbox Code Playgroud)