【问题标题】:Similar articles and exclude result with Laravel Eloquent与 Laravel Eloquent 类似的文章和排除结果
【发布时间】:2018-12-03 18:38:58
【问题描述】:

我将 Laravel 5.5 与 Eloquent 一起使用,并且正在显示酒店房间。 在每个房间页面上,我想在底部显示其他房间,但要排除所选的房间。

例如,我们有 4 种类型的房间(单人房、双人房、三人房、单人房)。 当用户进入双人房页面时,我希望在底部显示其他三个房间(单人房、三人房、单人房),因此在这种情况下必须排除“单人房”。

我已经创建了包含刀片文件 room-other,但是如何从数据库中获取数据并显示其他房间?

这是我的代码部分。

控制器:

public function room($slug) {
  $room = Room::whereTranslation('slug', $slug)->first();

  if($room->translate()->where('slug', $slug)->first()->locale != app()->getLocale()) {
    return redirect(route('room', $room->translate()->slug));
  }
  return view('room', compact('room'));
}

路线:

Route::get('/room/{slug}', 'RoomsController@room')->name('room');

查看:

@extends('layouts.front')

@section('content')
  <div class="main room">
    <div class="header-image"></div>
    <div class="container">
      <div class="top text-center">
        <div class="title"><h2>{{ $room->title }}</h2></div>
        <div class="subtitle"><h4>{{ $room->subtitle }}</h4></div>
      </div>
      <div class="bottom">
        <div class="row">
          <div class="col-sm-6">
            <div class="image">
              <img src="{{ Storage::url($room->image) }}" />
            </div>
          </div>
          <div class="col-sm-6">
            <div class="body">{!! $room->body !!}</div>
          </div>
        </div>
      </div>
      @include('includes.rooms-other')
    </div>
  </div>
@endsection

从代码中可以看出,我已将“房间-其他”视图创建为包含文件,但如何显示其他房间的数据?

编辑:我知道我可以在控制器中创建另一个方法并使用相同的视图调用路由,但是如何获得排除的结果? 我需要一个代码。

【问题讨论】:

  • 您可以为模型添加新功能以获取其他房间。在刀片中只需调用该函数。 laravel.com/docs/5.6/eloquent-relationships
  • 感谢您的评论。所以在我的控制器中,我必须创建一个新方法。但是,如何创建排除结果?你能用代码告诉我吗?

标签: php laravel eloquent


【解决方案1】:

您可以在控制器中这样做:

public function room($slug) {
    $room = Room::whereTranslation('slug', $slug)->first();
    $other_rooms = Room::where('id', '!=' , $room->id)->get();

    if($room->translate()->where('slug', $slug)->first()->locale != app()->getLocale()) {
          return redirect(route('room', $room->translate()->slug));
    }
    return view('room', compact('room', 'other_rooms'));
}

【讨论】:

  • 我在那个“东西”里放了什么?
  • 非常感谢! '!=' 是缺失的部分。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-25
  • 2018-08-07
  • 1970-01-01
  • 1970-01-01
  • 2014-10-31
  • 2017-10-28
相关资源
最近更新 更多