【问题标题】:Laravel PHP: Display array elements in drop down list alphabetically without using sort()Laravel PHP:在不使用 sort() 的情况下按字母顺序在下拉列表中显示数组元素
【发布时间】:2014-11-26 19:28:28
【问题描述】:

我有一个 Laravel PHP Photo Gallery 应用程序,它允许用户创建相册,然后从下拉列表中将照片插入到他们选择的相册中。这需要用户首先创建相册,因为下拉列表是动态的,基于实际存在的相册。下拉列表当前运行正常,但不按字母顺序显示专辑(数组元素)。

我尝试过使用 'sort()' 方法,但问题是数组元素 id 在这样做时会被切换/重新排序。我不希望对数组 ID 进行重新排序,因为这会将照片放入错误的相册中。

所以我想知道是否有一种方法可以在下拉列表中按字母顺序显示专辑,同时不对它们的数组元素 ID 重新排序。

控制器:

public function create()
{
    $stoneArray = $this->stone->all()->toArray();

    if (empty($stoneArray)) {
        $dropdown[0] = 'There are no stones';
    }

    foreach ($stoneArray as $stone) {
        $dropdown[$stone['stone_id']] = $stone['stone_name'];
        // sort($dropdown); /* This re-sorted the array element ids */

    }

    $data = array('type' => 'stone_photo', 'dropdown' => $dropdown);
    $this->layout->content = \View::make('forms.stones.new-photo', $data);
}

查看:

<div class="form-group">
    {{ Form::label('stone_id', 'Stone: ') }}
    {{ Form::select('stone_id', $dropdown, array('class' => 'form-control')) }}
</div>

非常感谢任何帮助!谢谢!

【问题讨论】:

  • stone 是数据库模型吗?
  • @TimLewis 是的,“石头”是模特。

标签: php laravel-4


【解决方案1】:

编辑

我在这里对你的文件结构做了一些假设,但它应该会给你这个想法。

在:app\Acme\repositories\Eloquent\EloquentStoneRepository.php 或无论你怎么称呼它,都有一个函数:

public function all()
{
  return Stone::all();
}

(我认为这就是它的样子,但我并不肯定)。尝试将其更改为:

public function all()
{
  return Stone::orderBy('column_name', 'asc')->get();
}

如果您在其他地方使用 all() 并且不想对其进行排序,请考虑添加另一个函数:

public function all_sorted()
{
  return Stone::orderBy('column_name', 'asc')->get();
}

希望有帮助!

编辑: 将 -&gt;all() 更改为 -&gt;get() 以便 eloquent 可以正确排序。

【讨论】:

  • 使用您的建议后,我收到“调用未定义方法 Acme\repositories\Eloquent\EloquentStoneRepository::orderBy()”错误。
  • 所以stone实际上是一个存储库,正在进行编辑。
  • 抱歉,Stone 是一个存储库。通过更改我的“all()”函数使用您的建议后,我收到错误“调用未定义的方法 Illuminate\Database\Eloquent\Collection::orderBy()”。不知道为什么会这样。
  • Nvm 尝试:`Stone::orderBy('column_name', 'asc')->get();
  • 我正在查找如何对 Eloquent 存储库列表进行排序,并且提到了使用 'orderBy()' 方法的最后一个解决方案。测试了它,现在可以正常工作了!非常感谢!
猜你喜欢
  • 2020-10-10
  • 1970-01-01
  • 2020-08-28
  • 2015-06-08
  • 2012-05-05
  • 2012-12-11
  • 2016-04-28
  • 2016-03-12
  • 2018-04-02
相关资源
最近更新 更多