php - Laravel 5 : How to create a custom attribute for a collection, 然后用它排序

标签 php sql laravel laravel-5 eloquent

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

例如我有 \App\Classes::where(something),从那里我想为每个类附加一个附加属性,然后使用该属性进行排序,即(受 https://laracasts.com/discuss/channels/eloquent/is-there-any-way-to-add-attribute-to-objects-in-collection 中的方法启发) )

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

但是这段代码给了我

SQL error: "Column not found: 1054 Unknown column 'custom_score' in 'order clause'"

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

什么是好的解决方案?

提前致谢..

最佳答案

使用 transform()领取方式:

$collection->transform(function($i) {
    $i->custom_score = // Some logic here
    return $i;
});

关于php - Laravel 5 : How to create a custom attribute for a collection, 然后用它排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48642719/

相关文章:

sql - 转化为BI相关表

mysql - 来自 3 个不同表的 SQL 查询

php - $this->app->singleton() 在 Laravel 中是如何工作的?

javascript - 在 laravel 中使用 ajax 更改状态

php - 类 CI_DB_mysqli_result 的对象无法转换为字符串

php - Firebase 推送通知不起作用获取 token 号但仍然不起作用

c# - C# 中的事务和 ExecuteNonQuery 错误

sql - Laravel Query Builder groupBy 结合关系

php - Silex 上的绑定(bind)方法

php - 使用 PHP 将 sql 数据转换为 json 数组给出 HTTP ERROR 500