Laravel - размещение записей в порядке возрастания и убывания

У меня есть метод создания в моем контроллере

public function create()
{
$image = PropertyUser::where('user_id', '=', Auth::user()->id)->get();
foreach($image as $property)
{
    $id = $property->property_id;
}
$image_main = Image::where('property_id', $id)->get();
return view('settings.photos', ['image_array' => $image_main]);
}

Это мой файл photos.blade

<form name = "asc" action = "{{route("settings.photos")}}" method = "post" class = "text-center">
    @csrf
    <input type = "submit"  value = "Ascending " class = "settings-photos-header2 text-center"/>  |
</form><form name = "dec" action = "{{route("settings.photos")}}" method = "post"  class = "text-center">
    @csrf
    <input type = "submit"  value= " Descending" class = "settings-photos-header2 text-center"/>
</form>
<h2 class = "settings-photos-header2 text-center">Photo Gallery</h2>
@foreach ($image_array as $images)
    <div class = "image-warp"><img src = "{{$images->filename}}"
                                 style = "width:100px;height:100px;"><br/><span style = "color: #1b1e21">{{$images->description}}</span>
    </form>
    </div>
    @endforeach

Вопрос. Как я могу заставить кнопку asc сортировать изображения в порядке возрастания и des в порядке убывания, есть ли способ подключить его к моему контроллеру или есть способ отсортировать их в порядке возрастания и убывания с помощью любых других средств?

Просто боковой комментарий: что-то выглядит не так в том, что ваш foreach(image as property).... выбирает последний property_id. Это намеренно?

Oluwatobi Samuel Omisakin 20.05.2018 10:42

Последний пользователь, который вошел в систему. Идентификатор свойства, а не только последний идентификатор свойства.

Paul 20.05.2018 12:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
2
1 684
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть много способов решить проблему сортировки, но, поскольку вы настроили свою страницу, позвольте мне рассказать вам, как вы можете сортировать записи. Создайте другое действие, указывающее на ваш маршрут settings.photos

public function settings_photos($property_id) {

  $form = Input::get('submit');
  $orderBy = $form == "Ascending" ? "asc" : "desc";

  # Fetch Images in of Specific Property 
  $list_of_images = Image::where('property_id', $property_id) 
  # Order by Asc/Desc 
  ->sortBy('id', $orderBy)->get(); 

  return view('settings.photos', ['image_array' => $list_of_images]); } 

Теперь добавьте Image->id, чтобы передать действие вашего контроллера по форме

https://stackoverflow.com/questions/50432659/laravel-arranging-records-in-ascending-and-descending-order#
<form name = "asc" action = "{{route("settings.photos")}}" method = "post" class = "text-center">

  @csrf
    
  <input type = "image_id" value = "{{$id}}" />
  <input type = "submit" value = "Ascending " class = "settings-photos-header2 text-center"/>  |
</form>

<form name = "dec" action = "{{route("settings.photos")}}" method = "post"  class = "text-center">
    @csrf
  <input type = "image_id" value = "{{$id}}" />
  <input type = "submit" value = "Descending" class = "settings-photos-header2 text-center"/>
</form>

Теперь внесите некоторые изменения в предыдущий код контроллера.

public function create()
{
$image = PropertyUser::where('user_id', '=', Auth::user()->id)->get();
foreach($image as $property)
{
    $id = $property->property_id;
}
$image_main = Image::where('property_id', $id)->get();
return view('settings.photos', ['image_array' => $image_main, 'id' => $id]);
}

Как я уже говорил, существуют различные способы сортировки записей даже с помощью Ajax, но я предлагаю вам использовать пример кода. Я тоже не оптимизировал код.

Дайте мне знать, если у вас возникнут вопросы. Спасибо

Я хочу отсортировать все изображения, а не одно, все изображения, а не конкретное изображение, если для каждого вывода 2 или более изображений, кнопка должна их отсортировать

Paul 20.05.2018 10:24

Что вы имеете в виду под всеми изображениями, а не под одним? Как вы упомянули запрос, с помощью которого вы получаете изображения в конкретном свойстве, следующий запрос вернет отсортированные изображения в свойстве. $ image_main = Изображение :: где ('property_id', $ image_id) -> sortBy ('id', $ orderBy) -> get (); Где $ image_id - это Property-> id согласно вашему образцу кода ..

Nouman Arshad 20.05.2018 12:36

Да, свойство, которое я мог бы иметь 2 или более изображений

Paul 20.05.2018 12:38

Хорошо, я предполагаю, что у Property есть изображения, и вы хотите получить все изображения, кроме свойства, в порядке ASC / DESC. Затем выполните следующий запрос: общедоступная функция settings_photos ($ property_id) {$ form = Input :: get ('submit'); $ orderBy = $ form == "По возрастанию"? «по возрастанию»: «по убыванию»; # Получить изображения в определенном свойстве $ list_of_images = Image :: where ('property_id', $ property_id) # Сортировать по возрастанию / убыванию -> sortBy ('id', $ orderBy) -> get (); return view ('settings.photos', ['image_array' => $ list_of_images]); }

Nouman Arshad 20.05.2018 12:46

@nourman, это было полезно, но, пожалуйста, не могли бы вы добавить его к ответу, который вы мне дали выше, для большей ясности, просто отредактируйте и добавьте свой комментарий, спасибо

Paul 20.05.2018 13:19

@IrueneAdokiye конечно

Nouman Arshad 20.05.2018 14:51

Другие вопросы по теме