laravel 5中的mysql_num_rows

时间:2015-02-27 10:29:11

标签: laravel mysql-num-rows

我试图为管理员提供选项,选择在网站中显示类别的顺序。

所以在控制面板中,他有一个向上箭头和每个类别标题旁边的向下箭头。如果他点击下来,该类别会按顺序下降。

我的问题是,如果类别位于底部,最后一个顺序,并且管理员点击向下箭头,我想显示错误。

所以我在我的控制器上做了类似的事情:

    /*
 * 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); 
    }
}

感谢

2 个答案:

答案 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());