【问题标题】:Sort two Laravel objects in the correct order以正确的顺序对两个 Laravel 对象进行排序
【发布时间】:2016-03-17 20:15:27
【问题描述】:

可以这么说,我有 2 个 Eloquent 对象想要“合并”。

我不知道合并是否是最好的方法,请提出建议。

$customer = Customer::find($customerId);

$events = $customer->Events()->Unfinished()->orderBy('created_at', 'asc')->get();

$notes = $customer->Notes()->orderBy('created_at', 'asc')->get();

Events() 是一个 hasMany = $customer->hasMany('events');

Unfinished() 是一个作用域 = $query->where('status', '=', '0');

Notes() 是一个 hasMany = $customer->hasMany('notes');

我想将 $events$notes 合并在一起,这样我就可以在 created_at 以正确的顺序遍历它们。

假设 $notes 包含 2 个帖子:

note 1
    created_at: 2013-01-30 00:00:00
note 2
    created_at: 2014-12-31 00:00:00

$events 包含 2 个帖子:

event 1
    created_at: 2014-02-01 00:00:00
event 2
    created_at: 2014-01-02 00:00:00

我希望他们像这样坠落:

event 1
    created_at: 2014-02-01 00:00:00
note 1
    created_at: 2013-01-30 00:00:00
event 2
    created_at: 2014-01-02 00:00:00
note 2
    created_at: 2014-12-31 00:00:00

我将如何最好地解决这个问题?

【问题讨论】:

标签: laravel laravel-4


【解决方案1】:

除非两个表具有相同的列,否则联合不会起作用。 但我确实找到了这个答案: http://laravel.com/api/source-class-Illuminate.Support.Collection.html#299-319

$customer = Customer::find($customerId);

$events = $customer->Events()->Unfinished()->get();

$notes = $customer->Notes()->get();

$combined = $events->merge($notes);

编辑: 并对组合集合进行排序:

$combined = $combined ->sortBy(function($sort){
    return $sort->created_at;
})->reverse();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多