你会如何用Eloquent - Laravel 5.2做到这一点

时间:2017-01-01 08:29:22

标签: eloquent laravel-5.2

我在控制器中有这个逻辑:

// hydratation part 1 (cf son modele) 
    $matiere->fill($request->all());

// hydratation part 2 with attributes not in the POST
    $matiere->id_ecole = Session::get('id_ecole');
    $request->has('matiere_inactive') ? $matiere->matiere_inactive = '1' : $matiere->matiere_inactive = null;
    if ($matiere->exists) {
        $matiere->auteur_modif = Session::get('nom').' '.Session::get('prenom');
    } else {
        $matiere->auteur_creation = Session::get('nom').' '.Session::get('prenom');
    }

我认为第2部分可能出现在模型中,而不是控制器(我喜欢'简短'控制器)。

这是个好主意吗?

如果是,我怎么能这样做?

我的模特是:

class Matiere extends Model {

protected $table = 'matiere';
protected $primaryKey = 'id_matiere';

protected $fillable = [
    'id_matiere',
    'code_court_matiere',
    'libelle_matiere'
];

public function setCodeCourtMatiereAttribute($value)
{
    $this->attributes['code_court_matiere'] = strtoupper($value);
}

public function setLibelleMatiereAttribute($value)
{
    $this->attributes['libelle_matiere'] = ucwords($value);
}

}

感谢您的建议。祝所有读者新年快乐。 DOM

1 个答案:

答案 0 :(得分:0)

Laravel 5. 3

你可以通过在Matiere模型上创建一个方法来做到这一点。

Here is a simple example: 

ExampleController.php

$mat = new \App\Matiere();

$feedback = $mat->addm($request);



Matiere.php

public function addm($request)
{
    $this->id_ecole = \Session::get('id_ecole');
    $request->has('matiere_inactive') ? $this->matiere_inactive = '1' : $this->matiere_inactive = null;

    $this->save();

    return $this->id;
}