<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use App\Models\Dataset; use Illuminate\Support\Facades\DB; class XmlCache extends Model { /** * The database table used by the model. * * @var string */ protected $table = 'document_xml_cache'; public $timestamps = false; /** * primaryKey * * @var integer * @access protected */ //protected $primaryKey = null; public $primaryKey = 'document_id'; public $incrementing = false; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = ['document_id', 'xml_version', 'server_date_modified', 'xml_data']; /** * Get the dataset that owns the xml cache. */ public function dataset() { return $this->belongsTo(Dataset::class, 'document_id', 'id'); } /** * Get dom document of 'xml_data' string * * @return \DOMDocument */ public function getDomDocument() { $dom = new \DOMDocument('1.0', 'utf-8'); $xmlData = $this->xml_data; $dom->loadXML($xmlData); return $dom; } /** * Check if a dataset in a specific xml version is already cached or not. * * @param mixed $datasetId * @param mixed $serverDateModified * @return bool Returns true on cached hit else false. */ public function hasValidEntry($datasetId, $serverDateModified) : bool { $select = DB::table('document_xml_cache'); $select->where('document_id', '=', $datasetId) ->where('server_date_modified', '=', $serverDateModified); $row = $select->first(); if (null === $row) { return false; } else { return true; } } }