Package Data | |
---|---|
Maintainer Username: | reshadman |
Maintainer Contact: | pcfeeler@gmail.com (Reza Shadman) |
Package Create Date: | 2014-09-21 |
Package Last Update: | 2021-08-23 |
Home Page: | |
Language: | PHP |
License: | GPL |
Last Refreshed: | 2024-11-26 15:07:56 |
Package Statistics | |
---|---|
Total Downloads: | 4,640 |
Monthly Downloads: | 107 |
Daily Downloads: | 1 |
Total Stars: | 20 |
Total Watchers: | 1 |
Total Forks: | 4 |
Total Open Issues: | 1 |
Thanks to Laravel, Django and Rails we all know that convention over configuration (CoC) makes the development more funny. So suppose that you want to convert the Gregorian date attributes of your Eloquent
models to Jalali (persian) dates, in this case j-Eloquent
helps you to convert them conventionally, for example when you access a property named $model->jalali_created_at
on your model, the PersianDateTrait
detects the convention automatically and tries to convert created_at
property of your model if it is a date attribute. This is also true for $model->toJson();
and $model->toArray();
fields.
require following line in your composer require
secion :
"require" : {
// Other dependecies ,
"bigsinoos/j-eloquent" : "dev-master" // Laravel 5 , "1.0" for Laravel 4
}
this package requires : miladr/jalali
jalali_
.toArrayl
, __toString();
and toJson
are called.PersianDateTrait
:By using \Bigsinoos\JEloquent\PersianDateTrait
trait in your models you can enable the plugin :
<?php
class Role extends \Eloquent {
use \Bigsinoos\JEloquent\PersianDateTrait;
protected $table = 'roles';
}
By default you can access your eloquent date attributes in jalali date by adding a jalali_
substring to the begining of your original attribute like jalali_created_at
:
$userPremiumRole = Auth::user()->roles()->where('type', 'premium');
$userPremiumRole->create_at; // 2014/12/30 22:12:34
$userPremiumRole->jalali_created_at; // 93/09/08
jalali_
prefixYou can change the jalali date convention prefix with overriding $model->setJalaliFormat($format)
and $model->getJalaliFormat();
or by overrriding $model->jalaliDateFormat
property on your model class :
class Role extends \Eloquent {
use \Bigsinoos\JEloquent\PersianDateTrait;
protected $jalaliDateFormat = 'l j F Y H:i';
}
# or
class Role extends \Eloquent {
use \Bigsinoos\JEloquent\PersianDateTrait;
public function setJalaliFormat($format){
// do custom things here
$this->jalaliDateFormat = $format; return $this;
}
protected function getJalaliFormat()
{
// return any format you want
return 'l j F Y H:i';
}
}
You can tell Eloquent that which one of your fields are date attributes like created_at and updated_at, then Eloquent treats them like Carbon
objects you define multiple date attributes like this :
Class Role extends \Eloquent {
use \Bigsinoos\JEloquent\PersianDateTrait;
/**
* Add this method to customize your date attributes
*
* @return array
*/
protected function getDates()
{
return ['created_at', 'updated_at', 'expired_at'];
}
}
When using the above trait all of the fields that are treated like date objects by Laravel will be available for conventional converting. They will be also added to model's toJson()
, toArray();
and __toString();
methods.
The $model->convertToPersian($attribute, $format);
method allowes you to normally convert one of your fields, from Gregorian date to Jalali date :
$user = Auth::user();
$user->convertToPersian('created_at', 'y/m/d'); // 93/09/08