View file File name : note-summary.php Content :<?php namespace ElementorPro\Modules\Notes\Database\Models; use ElementorPro\Modules\Notes\Module; use ElementorPro\Core\Database\Model_Base; use ElementorPro\Modules\Notes\Database\Query\Note_Query_Builder; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class Note_Summary extends Model_Base { /** * @var string */ public $url = null; /** * @var string */ public $full_url = null; /** * @var string */ public $title = null; /** * @var int */ public $notes_count = 0; /** * Casts array. * * @var array */ protected static $casts = [ 'notes_count' => self::TYPE_INTEGER, ]; /** * @inheritDoc */ public function __construct( array $fields ) { // Make sure each model comes with the full url alongside with the relative url. $fields['full_url'] = get_site_url( null, $fields['url'] ); parent::__construct( $fields ); } /** * Override the default Query Builder. * * @param \wpdb|null $connection * * @return Note_Query_Builder */ public static function query( \wpdb $connection = null ) { $table_name = static::get_table(); return ( new Note_Query_Builder( $connection ) ) ->set_model( static::class ) ->from( $table_name ) ->select( [ 'title' => 'route_title', 'url' => 'route_url', ] ) ->add_count_select( "{$table_name}.id", 'notes_count' ) ->group_by( 'route_url' ); } /** * Get the notes table name. * * @return string */ public static function get_table() { return Module::TABLE_NOTES; } }