未定义的属性:Illuminate \ Database \ Eloquent \ Collection :: $ name Laravel 5.3

时间:2017-02-28 21:27:42

标签: php laravel-5.3

路线为Route::resource('/admin/post', 'postController');

控制器中的

代码是

public function index()
{
    $s = Singer::where('id','<',5)->get()->name;

    return view("admin.new-post", ['s'=>$s]);
}

视图是

<select class="form-control select2 select2-hidden-accessible" multiple="" data-placeholder="Select a State" style="width: 100%;" tabindex="-1" aria-hidden="true">

                                <?php foreach ($s as $ss){
                                    echo '<option>'. $ss .'</option>';
                                 }?>

                            </select>

我想在select中列出数据库中所有歌手的名字。问题是,当我在查询中使用first()而不是get()获取单个值时,它会正确地返回单个值,而不会出现任何错误。但是当我使用get()并在视图中使用foreach循环来获取所有歌手时,它会给出此错误。 Undefined property: Illuminate\Database\Eloquent\Collection::$name。我已多次查看代码,但无法理解错误是什么。虽然获得一个名字没有问题..请给我一些解决方案。

1 个答案:

答案 0 :(得分:1)

控制器代码

public function index()
{
$s = Singer::where('id','<',5)->get();

return view("admin.new-post", ['s'=>$s]);
}

查看代码

<select class="form-control select2 select2-hidden-accessible" multiple="" data-placeholder="Select a State" style="width: 100%;" tabindex="-1" aria-hidden="true">

                            <?php foreach ($s as $ss){
                                echo '<option>'. $ss->name .'</option>';
                             }?>

                        </select>

当你使用first()时,你得到一个结果,当你使用get()时,即使你搜索一个用户,你也会获得collection个结果。