J'ai ce code qui fonctionne bien:

class Basket extends Model
{
use HasFactory;

...

protected $appends = [
    ...
    'price'
];

....
public function getPriceAttribute($value){
    ... some heavy computing
    return $totalPrice;
}

Mais ce que je vois, c'est que le calcul du prix sera exécuté, par exemple. quand j'appelle

Basket::all();

Ce qui est quelque chose que je veux éviter

Je le veux seulement quand je fais un panier :: find (id) donc par simple entrée.

Je n'ai pas trouvé jusqu'ici comment puis-je éviter éloquent de sauter ou non le getPriceAttribute

Une idée?

1
koalaok 14 mars 2021 à 15:02

1 réponse

Meilleure réponse

Une fois que vous avez créé l'accesseur et ajoutez la valeur à la propriété appends sur le modèle:

protected $appends = [
    ...
    'price'
];

Il doit être ajouté dans le contrôleur comme ci-dessous

$basket = Basket::find($request->id)->append('price');
1
Basharmal 14 mars 2021 à 13:29