php - 与 Laravel Eloquent 类似的文章和排除结果
问题描述
我将 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
正如您从代码中看到的那样,我将“房间-其他”视图创建为包含文件,但是如何显示其他房间的数据?
编辑:我知道我可以在控制器中创建另一个方法并使用相同的视图调用路由,但是如何获得排除的结果?我需要一个代码。
解决方案
您可以在控制器中这样做:
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'));
}
推荐阅读
- javascript - 如何使用 Django 从 Javascript 获取变量的值?
- swift - 如何将字符串数组转换为 URL 数组?
- oracle-cloud-infrastructure - 除了 oracle 云为实例提供的计算指标外,如何获取更多指标(线程数、句柄数)?
- matlab - 在元胞数组中查找所有出现的字符串(本身是结构的一部分)
- sql - 如果字段长度大于 5,则获取最后剩余的字符
- javascript - 有没有办法在不干扰常规垃圾收集的情况下保存对对象的引用?
- php - 从子域读取 PHP SESSION cookie
- c# - 尝试在对象列表中使用非静态对象
- apache-spark - 从 EMR 写入 DSE 图
- java - JRE 何时作为单独的产品完全停产?