1. Go to this page and download the library: Download timmcleod/laravel-core-lib library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Illuminate\Database\Eloquent\Model;
use TimMcLeod\LaravelCoreLib\Database\Eloquent\ChangeTrackable;
class User extends Model
{
use ChangeTrackable;
protected $trackable = ['first_name', 'last_name'];
}
/**
* Returns true if any of the $trackable attributes have changed. If the
* $trackable property evaluates as empty, this will return true if
* any of the attributes' values have changed on the model.
*
* @return bool
*/
$model->hasTrackedChanges()
/**
* Returns a string representation of the attributes that have changed. If a
* property called $trackable exists on the model, then that $trackable
* array is used to filter the attributes that should be serialized.
*
* If the $trackable property doesn't exist on the model or evaluates as empty,
* then all of the tracked changes will be serialized without being filtered.
*
* @param string $format
* @param string $delimiter
* @param string $emptyOld
* @param string $emptyNew
* @return string
*/
$model->getTrackedChanges($format = '{attribute}: {old} > {new}', $delimiter = ' | ', $emptyOld = '', $emptyNew = '')
/**
* Returns an array of the attributes that have changed. If a property called
* $trackable exists on the model, then the $trackable array will be used
* to limit or filter the attributes that are returned in the result.
*
* If the $trackable property doesn't exist on the model or evaluates as empty,
* then all of the tracked changes will be returned without being filtered.
*
* @return array
*/
$model->getTrackedChangesArray()
/**
* Returns true if any of the given attributes have changed on the model,
* regardless of whether or not the $trackable property is defined on
* the model.
*
* @param array $attributes
* @return bool
*/
$model->hasAnyTrackedChangesFor($attributes = [])
/**
* Returns a string representation of the attributes that have changed. If the
* $attributes parameter evaluates as empty, then all tracked changes will
* be serialized into a string without being filtered.
*
* @param array $attributes
* @param string $format
* @param string $delimiter
* @param string $emptyOld
* @param string $emptyNew
* @return string
*/
$model->getTrackedChangesFor($attributes = [], $format = '{attribute}: {old} > {new}', $delimiter = ' | ', $emptyOld = '', $emptyNew = '')
/**
* Returns an array of the attributes that have changed. If the $attributes
* parameter evaluates as empty, then all tracked changes are returned.
*
* @param array $attributes
* @return array
*/
$model->getTrackedChangesArrayFor($attributes = [])
/**
* Returns true if any of the model's attributes have changed, regardless
* of whether or not the $trackable property is defined on the model.
*
* @return bool
*/
$model->hasAnyTrackedChanges()
/**
* Returns a string representation of ALL of the attributes that have changed
* on the model, even if the $trackable property does exist on the model.
*
* @param string $format
* @param string $delimiter
* @param string $emptyOld
* @param string $emptyNew
* @return string
*/
$model->getTrackedChangesForAll($format = '{attribute}: {old} > {new}', $delimiter = ' | ', $emptyOld = '', $emptyNew = '')
/**
* Returns an array of the attributes that have changed. If the $trackable
* property exists on the model, it's ignored, and all tracked changes
* are always returned, regardless of whether $trackable exists.
*
* @return array
*/
$model->getTrackedChangesArrayForAll()
namespace App\Http\ViewModels;
use TimMcLeod\LaravelCoreLib\View\BaseViewModel;
class EditProfileViewModel extends BaseViewModel
{
/** @var array */
protected $rules = [];
}
// Inside of EditProfileViewModel class:
/**
* Returns true if the user's timezone is the same as the given timezone.
*
* @param Timezone $timezone
* @return bool
*/
public function isSelectedTimezone(Timezone $timezone)
{
return $this->user->timezone === $timezone->code;
}
// Inside of EditProfileViewModel class:
/**
* Returns the first half of cities from the cities array.
*
* @return array
*/
public function citiesCol1()
{
$len = count($this->cities);
return $this->cities->slice(0, round($len / 2));
}
/**
* Returns the second half of cities from the cities array.
*
* @return array
*/
public function citiesCol2()
{
$len = count($this->cities);
return $this->cities->slice(round($len / 2));
}