This forum has moved to a new location and is in read-only mode. Please visit talk.octobercms.com to access the new location.
from a certain number of items in a table, this is generating a strong exception resulting in a white blank screen do prefer use something like
Db::table( $instance->getTable())->count();
in a trait for example
trait Statisticable {
    public static function getCount()
    {
        $instance = new static;
        return Db::table( $instance->getTable())->count();
    }
}
                            Last updated
::all()->count() is quite heavy on memory usage. 
::count() will result in a count(*) database query.
Good advice!
the error log is empty with the model::all()->count() - i just have a white blank screen in the backend; yes you are right, most probably too heavy on memory usage. in this particular table i have about 36K items
Very interesting, though I am having troubles understanding why the $instance->getTable()->count() is so much better than ::count() or ::all()->count().
If I output $instance->getTable(), it is essentially a collection of a lot of methods, count() being one of them. But I fail to see how it "counts" better than the above mentioned methods.
Chris, daftspunk, care to elaborate?
Last updated
@Goedda: ::all()->count() retrieves all records, instantiates them as Models, then finally counts the collection. ::count() just does a basic select count(*) from some_table which is can be done very quickly inside the database.
yes, ::all() retrives all the record form a model, ::all()->count() will retrieves all the records from a model and count them (that was my performance issue because i dont need to retrieve all the records in order to count them)
and dont mix up this 2 different codes. ($instance->getTable())->count() with $instance->getTable()->count() im not using the second one.
the code has to be used in a trait for a Model class, i had to use a trait because i want this method getCount() to be available for all my model class first of all.
Second, the attributes $table is not public in the Model class (the parent one), so i had to use the method getTable() from the Model Class, and for this i had to instanciate a fake instance for the current model, so the $instance = new static; because the method getCount() is static
i think you could also write something like (not tested)
public function getCount()
    {
        return Db::table( $this->getTable())->count();
    }
                            Last updated
1-7 of 7