0

这是我的控制器:

return View::make('home.listings')
    ->with('listings', Listing::all());

以前,我在这样的视图上检查过它:(它适用于我的所有项目)

@if(!empty($listings))
     //use foreach and show listings
@else
     <h3>No listing is found.</h3>
@endif

这是我的清单模型。

class Listing extends Eloquent {

     public static $key = 'id';
     protected $table = 'ilanlar';
     public $timestamps = false;
}

现在,当数据库中有条目时它可以工作。但是,当没有时,它不会到达 else 块。因为:

dd(!empty($listings)) //output: (boolean) true

而且,当我输出列表变量时:

dd($listings) //outputs: 
    object(Illuminate\Database\Eloquent\Collection)[229]
            protected 'items' => 
                    array (size=0)
                            empty

这就是它没有到​​达 else 块的原因,因为 Eloquent 返回和对象并且它强制转换为 true。

问题是:我不知道为什么它会返回一个 Eloquent 集合。以前没有。我忽略了什么吗?

4

2 回答 2

1

Collection 对象有一个isEmpty()方法,所以你可以使用它:

@if(! $listings->isEmpty())
    //use foreach and show listings
@else
    <h3>No listing is found.</h3>
@endif

或者,您可以将所有内容转换为数组:

return View::make('home.listings')
    ->with('listings', Listing::all()->toArray());

并将所有内容用作视图中的数组:

@if(!empty($listings))
    @foreach(listings as $listing):
    <li>{{ $listing['name'] }}</li>  <!-- Note $listing is treated as an array -->
    @endforeach
@else
    <h3>No listing is found.</h3>
@endif
于 2013-11-06T15:08:22.057 回答
1

这是一个已知问题(如果您将其称为问题),解决方案是@if(count($listings))

正如你在这里看到的

于 2013-11-06T14:19:11.833 回答