在我的laravel视图中,我有一个由3个foreach组成的选择列表。我很欣赏第二个foreach中的查询不是最佳实践,但我不知道如何最好地构建它。
我现在的问题很大程度上是我在第二个foreach中得到一个未定义的错误,指的是建筑。
有人可以帮忙吗?
@foreach($buildings as $building)
<optgroup label="{{ Str::upper($building->title) }}"></optgroup>
@foreach (DB::select('select id, description from `floors` where `id` in (select distinct `floor_id` from `rooms` where `building_id` = $building->id)') as $floor)
<optgroup label="{{ $floor->description }}"></optgroup>
@foreach (Room::where('active',1)->where('floor_id', $floor->id)->where('building_id', $building->id)->orderBy('name')->get() as $room)
<option value="{{ $room->id }}"> - {{ $room->fulltitle }}</option>
@endforeach
@endforeach
@endforeach
答案 0 :(得分:1)
您正在使用'
- 引用的字符串。他们做 NOT 插入变量。
$foo = 'bar';
echo '$foo'; // outputs $, f, o, o
echo "$foo"; // outputs b, a ,r
这意味着您将文字$
,b
,u
等发送到数据库,这将是一个未知/非法的字段名称。< / p>
所以你应该:
@foreach (DB::select("select [...snip...] = $building->id)") as $floor)
^------------------------------------^