File: /var/www/ipsremont-demo/app/Repository/BaseRepository.php
<?php
namespace App\Repository;
abstract class BaseRepository
{
public abstract static function getQuery();//: Builder;
/** Return ALL items available for me */
public static function getAvailable()//: Builder
{
$query = static::getQuery();
$query->my();
return $query;
}
/** Return DISPLAYED=1 items, available for me */
public static function getDisplayed()//: Builder
{
$query = static::getAvailable();
$query->displayed();
return $query;
}
/**
* @param $id
*
* @return mixed
*/
public static function getById($id)
{
return static::getAvailable()->findOrFail($id);
}
/**
* @param $externalId
*
* @return mixed
*/
public static function getByExternalId($externalId)
{
return static::getAvailable()->where('external_id', $externalId)->first();
}
public function getLast(int $limit = 5)
{
$query = static::getAvailable();
$query->orderBy('updated_at', 'desc');
return $query->limit($limit);
}
}