2016-03-23 20 views
1

Also im Grunde habe ich einen Array-Mutator, der perfekt funktioniert, aber das Feld ziehen ist nur ein Zeichen 1 und nur 1 Eintrag, so dass es funktioniertLaravel 5.2 eloquent Mutator für Feld mit mehreren Einträgen.

Ich möchte jedoch genau dasselbe mit einem Feld, das mehrere enthält Einträge durch ein Kommatrennzeichen. Unten ist, was ich habe, das funktioniert und und Beispiel von dem, was ich will.

Die Feld Interessen enthält eine Zahl von 1 bis 3,

protected $userTypes = array(
    '1' => 'Owner', 
    '2' => 'Admin', 
    '3' => 'Standard User' 
); 

public function getUserTypeAttribute($value) 
{ 
    return $this->userTypes[$value]; 
} 

Ich habe jetzt ein anderes Feld, nennen wir es, InterestList aber es mehrere Einträge durch Kommas getrennt wie so 3,4,5,6 hat, 7

Wie würde ich den Code wie oben für so etwas funktionieren?

Antwort

1

Try this -

<?php 

// lets define the interest list 

protected $interestList = array(
    '1' => 'Play', 
    '2' => 'Sing', 
    '3' => 'Hobby' 
); 


// function for getting the interesttype strings 
public function getIntestetTypeString($intStr=''){ 
    // $intStr = '1,3' ; may be something like 
    $interestList = ''; 
    if(!empty($intStr)){ 
     $attrToIterate = explode(", ",$intStr) ; 

     foreach($attrToIterate as $value){ 
      if($interestList){ 
       $interestList .= ','. $this->interestList[$value] ; 
      }else{ 
       $interestList .= $this->interestList[$value] ; 
      } 
     } 
    } 

    return $interestList ; 
} 
+0

Wow, du bist erstaunlich. Ich habe es noch nicht ausprobiert, aber es macht total Sinn !!! Vielen Dank. Ich werde es versuchen, throw upvote –

+0

Hey So habe ich implementiert, aber es gibt nichts, nur neugierig, auf der Klinge, wie kann ich das zurückgeben? Ich mache {{$ UserDetails-> InstesType}} –

0

Hey so landete ich mit einer Antwort auf, Unten ist der Code

public function getInterestsAttribute($value) 
{ 
    $InterestList = array(
     '1' => 'Books', 
     '2' => 'Cars', 
     '3' => 'Cats' 
    ); 

    $strExplode = explode(",",$value); 
    foreach ($strExplode as $i=>$ANUMBER){ 
     echo $InterestList[$ANUMBER]; 
    } 

} 

Dann in der Klinge Sie genauso normal über Ihren Weg gehen. z.B.

{{$ UserProfile-> Interessen}}

Verwandte Themen