我有一个对象,其中包含照片文件路径,标题及其中的顺序等。
我需要按照“订单”的顺序对单张照片进行排序。因此,当我遍历每张照片时,它们会按照订单值指定的顺序显示。
以下是一个示例对象:
object: Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
(
[0] => Photo Object
(
[timestamps] =>
[guarded:protected] => Array
(
[0] => id
)
[connection:protected] =>
[table:protected] =>
[primaryKey:protected] => id
[perPage:protected] => 15
[incrementing] => 1
[attributes:protected] => Array
(
[id] => 11
[res_id] => 1
[order] => 6
[owner_type] => Hotel
[owner_id] => 1
[gallery] =>
[caption] =>
[file] => Hotel_1_11.jpg
[deleted_at] =>
)
答案 0 :(得分:5)
在数据库中对数据进行排序总是更好,例如:
$photos = Photo::orderBy('order')->get();
这应该会给你更好的表现。
但是,如果无法进行上述操作,您可以在收藏中调用以下内容:
$collection = $collection->sortBy('order');
这将按照您所拥有的任何模型的顺序字段按升序对其进行排序。
如果您想按降序对它们进行排序,请执行以下操作:
$collection = $collection->sortBy('order', SORT_REGULAR, true);
答案 1 :(得分:1)
从Laravel 5.1开始,您可以使用相当短的语法以降序顺序排序:
$collection = $collection->sortByDesc('order');
而不是:
$collection = $collection->sortBy('order', SORT_REGULAR, true);
答案 2 :(得分:0)
如果您有一个集合,并且希望根据其任何键对其进行排序,则可以使用以下代码。
//if you want to sort in ascending order
$unique = $collection->unique()->sortBy('YOUR_KEY_TO_SORT');
//if you want to sort in descending order
$unique = $collection->unique()->sortBy('YOUR_KEY_TO_SORT', SORT_REGULAR, true);