Laravel - расположение изображений в порядке возрастания и убывания со ссылками - PullRequest
0 голосов
/ 19 мая 2018

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

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]);
}

Это мой вид лезвия

<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 в порядке убывания, есть ли способ подключить его к моему контроллеру, или есть способ отсортировать их в порядке возрастания и убывания по <a href> ссылкам?

1 Ответ

0 голосов
/ 19 мая 2018

Во-первых, foreach переопределяет $id в каждой итерации, поэтому, наконец, значение $id равно $property_id значению последнего элемента из массива $image.

Вам необходимо определить отношения.

В PropertyUser добавлении класса:

public function images() {
  return $this->belongsTo(Image::class, 'property_id');
}

Затем в вашем методе create в контроллере:

public function create(Request $request) {    

  // use direction query parameter to define asc or desc sorting
  $order_direction = $request->query('direction');

  $property_user = PropertyUser::where('user_id', '=', Auth::user()->id)
                                 ->with(['images' => function($query) use ($order_direction) {
                                     $query->orderBy('id', $order_direction)                                     
                                 })->get();

  // here you can access an array with associated images:
  $images = $property_user->images;  

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

Ваша ссылка на отсортированные изображения должна выглядеть следующим образом:<a href="/create.html?direction=asc">Sort asc</a>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...