2016-03-23 2 views
1

Так что в основном у меня есть мутатор массива, который отлично работает, но поле его вытягивания - это только символ 1 и только 1 запись, поэтому он отлично работаетLaravel 5.2 eloquent mutator для поля с несколькими входами.

Однако я хочу сделать то же самое с полем, которое содержит несколько записи разделителем запятой. ниже есть то, что у меня есть, что работает и пример того, что я хочу.

В поле интересов содержит число от 1 до 3,

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

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

Теперь у меня есть еще одно поле позволяет называть его, InterestList, но он имеет несколько записей, разделенных запятыми, как так 3,4,5,6, 7

Как бы получить код, подобный выше, для работы над чем-то подобным?

ответ

1

Попробуйте это -

<?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

Ничего себе ты потрясающий. Я еще не пробовал, но это имеет смысл !!! Спасибо. Я попробую это thrn upvote –

+0

Эй, я реализовал это, но он ничего не возвращает, просто любопытно, на клинке, как мне это вернуть? Я делаю {{$ UserDetails-> IntestetType}} –

0

Эй, так что я в конечном итоге с ответом, Ниже приведен код

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

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

} 

Тогда в лезвии вы просто идти о вашем пути, как обычно. например.

{{$ UserProfile-> Интересы}}

Смежные вопросы