Traits avec PHP et Laravel

Je suis à l'aide de Laravel 5.1 et aimeriez avoir accès à un tableau sur le Modèle du Trait lorsque le Modèle avant, le modèle utilise les appends tableau.

Je voudrais ajouter certains éléments à la ajoute tableau, s'il existe, de mon caractère. Je ne veux pas modifier le modèle afin d'atteindre cet objectif. Traits sont réellement utilisable dans ce scénario, ou devrais-je utiliser l'héritage?

array_push($this->appends, 'saucedByCurrentUser');

Ici est de savoir comment mon setup actuel fonctionne.

Trait

<?php namespace App;

trait AwesomeSauceTrait {

  /**
   * Collection of the sauce on this record
   */
  public function awesomeSauced()
  {
    return $this->morphMany('App\AwesomeSauce', 'sauceable')->latest();
  }
  public function getSaucedByCurrentUserAttribute()
  {
    if(\Auth::guest()){
        return false;
    }
    $i = $this->awesomeSauced()->whereUserId(\Auth::user()->id)->count();
    if ($i > 0){
        return true;
    }
    return false;
  }
}

Modèle

<?php namespace App;

use App\AwesomeSauceTrait;
use Illuminate\Database\Eloquent\Model;

class FairlyBlandModel extends Model {
    use AwesomeSauceTrait;

    protected $appends = array('age','saucedByCurrentUser');

}

Ce que j'aimerais faire, c'est quelque chose à atteindre le même effet que l'extension d'une classe. J'ai un peu de traits similaires, de sorte que l'utilisation de l'héritage devient un peu laid.

trait AwesomeSauceTrait {
 function __construct() {
     parent::__construct();
     array_push($this->appends, 'saucedByCurrentUser');
 }
}

J'ai vu quelques solutions de contournement pour cemais aucune d'entre elles semblent mieux/plus propre que tout ajout de l'élément dans le tableau manuellement. Toutes les idées sont les bienvenues.

Mise à jour


J'ai découvert cette façon d'accomplir ce dont j'ai besoin pour un trait de caractère, mais il ne fonctionne que pour un seul trait et je ne vois pas l'avantage de l'utilisation de ce sur l'héritage.

trait

protected $awesomeSauceAppends = ['sauced_by_current_user'];

protected function getArrayableAppends()
{
    array_merge($this->appends, $this->awesomeSauceAppends);
    parent::getArrayableAppends();
}

Comment je suis actuellement à la manipulation de mon Modèle, pour ce qu'il vaut.

modèle

public function __construct()
{
    array_merge($this->appends, $this->awesomeSauceAppends);
}

source d'informationauteur whoacowboy