Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 08.04.2013 18:02:53

Атрибуты модели

У меня есть несколько полей в БД например, process_at, arr_cn_at и т.д. с префиксом at.

Как сделать проверку на атрибут, если он имеет префикс at, то возвращать в каком-то формате.

Сейчас сделал так:

PHP
public function get_process_date()
    {
        
$date $this->get_attribute('process_at');
        return (
$date)?date('d.m.Y'strtotime($date)):Null;
    }

    public function 
get_arr_cn()
    {
        
$date $this->get_attribute('arr_cn_at');
        return (
$date)?date('d.m.Y'strtotime($date)):Null;
    }

    public function 
get_arr_kg()
    {
        
$date $this->get_attribute('arr_kg_at');
        return (
$date)?date('d.m.Y'strtotime($date)):Null;
    }


    public function 
set_process_date($date)
    {
        
$this->set_attribute('process_at', ($date)?new DateTime($date):Null);
    }

    public function 
set_arr_cn($date)
    {
        
$this->set_attribute('arr_cn_at', ($date)?new DateTime($date):Null);
    }

    public function 
set_arr_kg($date)
    {
        
$this->set_attribute('arr_kg_at', ($date)?new DateTime($date):Null);
    }

Как видите код сильно разросся. Это можно как-то лаконично сделать?

Или может быть указать в массиве атрибуты, чтобы они возвращались в каком-то формате? Есть подобное?

Не в сети

#2 09.04.2013 07:26:59

Re: Атрибуты модели

https://github.com/torm3nt/Fatty

нашел вот это

Не в сети

#3 09.04.2013 08:23:13

Re: Атрибуты модели

А что мешает просто написать 2 дополнительные функции?

PHP
public function get_process_date()
{
  return 
$this->getDate('process_at');
}

public function 
get_arr_cn()
{
  return 
$this->getDate('arr_cn_at');
}

public function 
get_arr_kg()
{
  return 
$this->getDate('arr_kg_at');
}

public function 
set_process_date($date)
{
  
$this->setDate('process_at'$date);
}

public function 
set_arr_cn($date)
{
  
$this->setDate('arr_cn_at'$date);
}

public function 
set_arr_kg($date)
{
  
$this->setDate('arr_kg_at'$date);
}

// ---

public function getDate($field)
  
$date $this->get_attribute($field);
  return 
$date date('d.m.Y'strtotime($date)) : null;
}

public function 
setDate($field$date)
  
$this->set_attribute($field$date ? new DateTime($date) : null);
}

Не в сети

#4 12.04.2013 21:33:48

Re: Атрибуты модели

Там где используется статический метод update или create, где передается массив и айдишник это не прокатит?

PHP
$orderinfo = array(
  
'name' => Input::get('name'),
  
'process_at' => Input::get('process_at'),
  
'price' => Input::get('price'),
);

Order::update($id$orderinfo);

Не в сети

#5 12.04.2013 21:47:34

Re: Атрибуты модели

Сработает, так как используется метод PHPfill(), а он делает PHP$model->process_at '...';, что вызывает setter PHPset_process_at() (то же для других).

Не в сети

Подвал раздела