我试图为管理员提供选项,选择在网站中显示类别的顺序。
所以在控制面板中,他有一个向上箭头和每个类别标题旁边的向下箭头。如果他点击下来,该类别会按顺序下降。
我的问题是,如果类别位于底部,最后一个顺序,并且管理员点击向下箭头,我想显示错误。
所以我在我的控制器上做了类似的事情:
/*
* Category order - down
*/
public function down($id)
{
$cat = Cat::findOrFail($id);
$new_location = $cat->location + 1;
$num_cats = count(Cat::all()); //number of cats
//die($num_cats);
if ($new_location >= $num_cats)
{
return Redirect::route('pages')->with('msg', 'it is allready the last category');
}
$cat->where('location', '=', $new_location)->update(['location' => $cat->location]); //moving the old category
$cat->where('id', '=', $id)->update(['location' => $new_location]); //updating the new location
return Redirect::route('pages')->with('msg', 'the cat has been updated');
}
但$ num_cats变为null。
任何想法如何获取所有类别的数量?
编辑:模型
class Cat extends Model {
public $timestamps = false;
protected $fillable = array( 'name', 'location', 'slug' );
/*
* A categorey has many pages
*/
public function pages() {
return $this->hasMany('App\Page')->where('solo', '!=', 1);
}
}
感谢
答案 0 :(得分:1)
建议您执行 计算 ,例如$num_cats = Cat::count()
;
因为Cat::all()
的返回是Illuminate\Database\Eloquent\Collection
您需要知道功能计数
int count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] )
和
Cat::count();
SQL:SELECT count(*) as aggregate FROM "cats"
;需要更少的记忆。
Cat::all()->count();
SQL:SELECT * FROM "cats";
需要更多内存。
答案 1 :(得分:0)
您可以使用其中任何一项来获取计数:
$num_cats = count(Cat::all());
或
$num_cats = Cat::all()->count();
或
$num_cats = count(Cat::all()->toArray());