2
votes

Fonction modèle Laravel pour obtenir la description des entités associées sous forme de chaîne

J'ai une relation à deux entités où Order aMany OrderItems. J'essaie d'obtenir les détails de l'article de commande sous forme de chaîne de description dans ma fonction desc comme ci-dessous.

class Order extends Model
{
    public function items(){
        return $this->hasMany(OrderItem::class);
    }

    public function desc() : string
    {
      $items = $this->items->select("item_name, price")->get();   
      $desc='';
      foreach($items as $item){
        $desc .=implode(':',$item).', ';
      }
      return $desc;
      //return 'item_name:price, cards:50,'
    }  
}

Son lancement

"implode (): Arguments non valides passés"

Pouvez-vous m'aider s'il vous plaît comment puis-je y parvenir? Y a-t-il une meilleure façon de procéder?


3 Réponses :


2
votes

Je suis sûr que ce n'est pas la meilleure solution, mais vous pouvez essayer:

public function desc() : string
{
      $items = $this->items
           ->select("item_name, price")
           ->pluck("item_name, price")
           ->all(); // here you get array with key-value pairs

      $desc = '';
      foreach ($items as $k => $v) {
        $desc .= 'item_name: ' . $k . ', price: ' . $v . ',';
      }
      return $desc;
}  


0 commentaires


3
votes

Utilisez ceci dans votre modèle OrderItem

public functon getDescAttribute()
{
    $value = "{$this->item_name}:{$this->price}";
    return $value;
}

Cela doit être la meilleure solution, $ item-> desc pour le récupérer


0 commentaires