2016-11-02 3 views
1

Я понял кое-что, что не могу понять сам.Laravel Foreach Controller vs View

Я получаю другой результат, когда я прохожу первым в контроллере и передаю результат на мой взгляд. Прямо на мой взгляд.

Например: У меня есть это в мой контроллер:

public function index() 
{ 
    $subscribers = Subscriber::where('user_id', Auth::user()->id)->orderBy('created_at','asc')->get(); 

    foreach ($subscribers as $key => $subscriber) { 
     $var = $subscriber->name; 
    } 

    return view('backend.newsletter.contacts.index')->withSubscribers($subscribers) 
                ->withVar($var); 
} 

с помощью {{$}} вар на мой взгляд, я получаю только «Джон» в качестве результата.

Но когда я использую цикл Еогеасп на мой взгляд, вместо того, чтобы в контроллере:

@foreach($subscribers as $key => $subscriber) 
{{$subscriber->name}} 
@endforeach 

Я получаю два результата «Джон» и «Дан». Это имеет смысл, поскольку у меня есть две записи в моей БД.

Итак, как получается, что у меня есть два разных результата?

ответ

5

Когда вы делаете это:

foreach ($subscribers as $key => $subscriber) { 
    $var = $subscriber->name; 
} 

С каждой итерации вы перезаписать $var, так что вы всегда получите последнее значение. Например, если у вас есть ['Dan', 'John, 'Alice', 'Alan'], вы получите Alan.

Хорошая практика - слишком передавать данные на просмотр и повторять ее с помощью @foreach.

0

Поскольку только последняя итерация цикла хранится в $var.

Вы должны

$var = []; 
foreach ($subscribers as $key => $subscriber) { 
    $var[] = $subscriber->name; 
} 
0

Вы перекрывая $ вар в петле.

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

$var = []; foreach ($subscribers as $key => $subscriber) { $var[] = $subscriber->name; // Appends name to array }

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