<?php

namespace {{ namespace }};

use Illuminate\Database\Eloquent\Relations\Pivot;

class {{ class }} extends Pivot
{
    //

    /**
     * Indicates if the model should be timestamped.
     * By default our pivots will not use timestamps
     *
     * @var bool
     */
    public $timestamps = false;

		protected $default_relations = [
			# {{ defaultRelationsInsertPoint }}
		];


		//relations

		// BelongsTo
		# {{ belongs_to_relationships }}

		// HasMany
		# {{ has_many_relationships }}
		
    // HasManyThrough
		# {{ has_many_through_relationships }}

		/**
		 * Load the default relations for the model.
		 *
		 * @return $this
		 */
		public function load_relations() {
			foreach($this->default_relations as $relation) {
				$this->load($relation);
			}
			return $this;
		}

		//MARK FOR MODEL
		protected static function load_auxilary_data() {
			$data = [];

			$instance = new static();
		
		  foreach($instance->default_relations as $relation) {
				$related_model = $instance->$relation()->getRelated();
				$related_table = $related_model->getTable();
				$data[$related_table] = $related_model->all()->pluck('name','id')->toArray();
			}

			return $data;
		}

		//MARK FOR MODEL
		public static function load_index() {
			return static::load_auxilary_data();
		}

		//MARK FOR MODEL
		public static function load_create() {
			return static::load_auxilary_data();
		}

		//MARK FOR MODEL
		public static function load_edit() {
			return static::load_auxilary_data();
		}


		/**
		 * Retrieve a query builder instance with default relations loaded.
		 *
		 * @return \Illuminate\Database\Eloquent\Builder
		 */
		//MARK FOR MODEL
		public static function data_query() {
		    $query = static::query();
		
				$instance = new static();

		    foreach($instance->default_relations as $relation) {
		        $query->with($relation);
		    }
		
		    return $query;
		}

		/**
     * Retrieve a query builder instance with default relations loaded.
     *
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public static function get_data()
    {
        return static::data_query()->get();
    }
}
