PHP Laravel返回查看空变量

PHP Laravel返回查看空变量,php,laravel,laravel-5,Php,Laravel,Laravel 5,我有一个方法可以从搜索栏中获取单词并在数据库中查询,然后返回视图 但它显示空表,尽管我检查了空变量 这是控制器代码 <?php public function getSearch($title) { $words = Word::where('title', $title)->first(); if (empty($words)) { abort(404); }

我有一个方法可以从搜索栏中获取单词并在数据库中查询,然后返回视图

但它显示空表,尽管我检查了空变量

这是控制器代码

<?php

    public function getSearch($title) {
            $words = Word::where('title', $title)->first();
            if (empty($words)) {

                abort(404);
            }
            return view('dict.index', compact('words'));

        }

您的代码中有几个错误。首先,您的查询将始终返回一个元素,而我假设您需要查询的所有结果。您应该使用get函数从查询中删除所有行

在雄辩的集合上使用将永远不会返回
false
,因为您将始终收到雄辩的对象或集合。要检查集合是否有任何值,可以使用函数

结果应该是这样的:

<?php

    public function getSearch($title) {
            $words = Word::where('title', $title)->get();
            if ($words->isEmpty()) {
                abort(404);
            }

            return view('dict.index', compact('words'));
        }

为了补充Jerodev的答案,编写视图的更优雅的方法是使用blade语法

@foreach($words as $word)
<tr>
    <td>{{ $word->title }}</td>
    <td>{{ $word->meaning }}</td>
    <td>
    @for($i=0; $i<$word->rate; $i++)
        <img src="/images/pjdict/star.png" width="20" height="20" />
    @endfor
    </td>
</tr>
@endforeach
@foreach($words作为$word)
{{$word->title}
{{$word->means}
@对于($i=0;$irate;$i++)
@结束
@endforeach
记住在视图中添加
.blade
后缀。例如,
dict.index.blade.php


我建议为什么我的视图有空表,因为if(empty($words)){abort(404);}没有输入我怀疑是因为我使用了->first()??当我更改为get-first返回一个元素时是ok的,但我混淆了first和get-first返回一个元素,它的意思是什么,以及何时应该使用first();
<?php

    foreach ($words as $row) {
        echo '<tr>';
        echo '<td>' . $row->title . '</td>';
        echo '<td>' . $row->meaning . '</td>';
        echo '<td>';
        for ($i = 0; $i < $row->rate; $i++) {
            echo '<img src="/images/pjdict/star.png" width="20" height="20">';
        }
        echo '</td>';
        echo '</tr>';
    }
@foreach($words as $word)
<tr>
    <td>{{ $word->title }}</td>
    <td>{{ $word->meaning }}</td>
    <td>
    @for($i=0; $i<$word->rate; $i++)
        <img src="/images/pjdict/star.png" width="20" height="20" />
    @endfor
    </td>
</tr>
@endforeach