首先,我需要向您解释我正在努力实现的目标 . 我试图将所有 $categories
返回到用于编辑图像的视图,以便我可以将那些 $categories
放在选择元素中但是具有此图像属于顶部的$类别 . 我尝试过几种不同的方式,每次都给我带来了很多麻烦 . 让我给你举个例子 .
我的主要问题是我需要第一个select元素作为图像的当前$类别,这样如果用户没有选择不同的元素,图像的$类别就不会改变 .
这就是我以前的尝试:
-
我做了一个查询,除了带有$ image-> category_id的类别之外,它都获得了所有类别 .
-
然后我做了另一个查询,只获得了$ image-> category_id的类别(我知道这个查询几乎没用,但我也需要该类别的名称)
-
我将这些变量发送到视图
-
我在视图中使用了变量
我的代码是这样的(我已经删除了一些与isseu无关的代码):
public function updateArtwork($id){
$image = Image::where('id', $id)->first();
$imageCategoryId = $image->category_id;
$categories = Category::where('id', '!=', $imageCategoryId)->orderBy('created_at', 'desc')->get();
$imageCategory = Category::where('id', $imageCategoryId)->first();
$imageCategoryName = $imageCategory->name;
return view('updateArtwork', ['image' => $image, 'categories' => $categories, 'imageCategoryId' => $imageCategoryId, 'imageCategoryName' => $imageCategoryName]);
}
然后我在视图中使用它:
<div class="form-group">
<label class='label required' for="artwork-category">Category</label>
<select class='category-select' name='artwork-category' value='{{ Request::old('artwork-category') }}'>
<option value='{{ $imageCategoryId }}'>{{ $imageCategoryName }}</option>
@foreach($categories as $category)
<option value='{{$category->id}}'>{{$category->name}}</option>
@endforeach
</select>
</div>
关于我是如何做到这一点的,我有很多问题 . 首先,我进行了2次查询,以检查图像所属的类别以及图像所属的类别 . 然后我必须向视图发送大量变量,然后在视图中使用它们 . 我还需要检查这些变量是否存在,因为如果图像没有类别,我的代码会变得乱七八糟 .
这就是为什么我一直想知道我是否可以用雄辩来解决所有这些问题 . 是否有可能做到这一点:
-
按降序获取所有类别 .
-
然后在集合的开头放置一个具有特定id的类别(这样它将成为第一个出现在选择框中的元素),但仍然按照降序排列 .
2 回答
获取除了在时间戳创建的desc排序的匹配id之外的所有项目,然后prepend该项目到集合:
或者使用partition:
试试这个代码 . 只有一个查询
要么