Laravel 5 добавить результаты запроса в foreach к массиву

У меня проблема в моем приложении Laravel 5. Мой метод-контроллер содержит foreach, который должен перебирать предыдущий массив Eloquent-result (он называется $ zipcodes). Поэтому каждый zipcode используется для заполнения запроса, который возвращает объект Article (с именем $ article). Каждый конец итерации должен добавить результат статьи в массив ($ articles), который используется в конце моего метода для отображения статей на моей странице. Может быть, есть лучший вариант для выполнения статьи-запроса, а не для каждой итерации, но я не знаю, как это сделать.

ОБНОВИТЬ

Это работает для моей проблемы, не выполняя запрос в foreach: Laravel multiple, где предложения в запросе из заданного массива

Мой код сейчас

// grabs all zipcodes matching the distance $zipcodes = $this->getZipcodes($zipCoordinateId, $distance); foreach ($zipcodes AS $key=>$val) { $zipcodes[$key] = (array) $val; } $codes = array_column($zipcodes, 'zc_zip'); $articles = Article::whereIn('zipcode', $codes)->get(); return view('pages.intern.articles.index', compact('articles')); 

ОБНОВЛЕНИЕ КОНЕЦ

Мой SearchController:

 <?php namespace App\Http\Controllers; use App\Article; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Session; class SearchController extends Controller { public function getSearch(Request $request) { if(($request->has('zipcode'))) { $zipcode = $request->input('zipcode'); $distance = $request->input('distance'); $zipCoordinateId = $this->getZipCoordindateId($zipcode); $zipcodes = $this->getZipcodes($zipCoordinateId, $distance); $articles = array(); foreach($zipcodes as $value) { //$zipcode = $zipcodes[0]->zc_zip; // this is working $zipcode = $value->zc_zip; $article = Article::where('zipcode', $zipcode)->get(); // add the $article each iteration to $articles } return view('pages.articles', compact('articles')); } else { return redirect('/articles'); } } public function getZipCoordindateId($value) { $result = DB::table('zip_coordinates') ->where('zc_zip', '=' , $value) ->orWhere('zc_location_name', 'LIKE', $value) ->pluck('zc_id'); return $result; } public function getZipcodes($id, $distance) { $result = DB::select( DB::raw(" SELECT dest.zc_zip, ACOS( SIN(RADIANS(src.zc_lat)) * SIN(RADIANS(dest.zc_lat)) + COS(RADIANS(src.zc_lat)) * COS(RADIANS(dest.zc_lat)) * COS(RADIANS(src.zc_lon) - RADIANS(dest.zc_lon)) ) * 6380 AS distance FROM zip_coordinates AS dest CROSS JOIN zip_coordinates AS src WHERE src.zc_id = :id HAVING distance < :distance ORDER BY distance"), array('id' => $id, 'distance' => $distance)); return $result; } } 

мой взгляд:

 @extends('layouts.default') @section('content') <h1>All Articles</h1> <hr/> <search> {!! Form::open(['url' => 'intern/search']) !!} {!! Form::text('zipcode', null, ['class' => 'form-control']) !!} {!! Form::select('distance', [ '5' => '5 km', '10' => '10 km', '25' => '25 km', '50' => '50 km', ], null, ['class' => 'form-control']) !!} {!! Form::submit('Suchen', ['class' => 'btn btn-success']) !!} {!! Form::close() !!} </search> @foreach($articles as $article) <article> <h2> <a href="{{ url('/articles', $article->id) }}">{{ $article->name }}</a> </h2> <div> <label>Description:</label> <p>{{ $article->description }}</p> </div> <div> <label>ZIPCODE:</label> {{ $article->zipcode }} </div> <div> <label>Published:</label> {{ $article->published }} </div> <div> <label>Rank:</label> {{ $article->rank }} </div> </article> <hr/> @endforeach @stop 

Надеюсь, вы можете мне помочь, спасибо заранее. quantatheist

РЕДАКТИРОВАТЬ

Когда я использую

 foreach($zipcodes as $key => $value) { $articles[] = Article::where('zipcode', $value->zc_zip)->get(); } print_r($articles); 

С другим zipcode в поисковых и обновленных zip-кодах моих статей он печатает (на данный момент в моей базе данных есть три статьи, у первых есть zipcodes, которые находятся в диапазоне моего нового поиска в zipcode):

 Array ( [0] => Illuminate\Database\Eloquent\Collection Object ( [items:protected] => Array ( [0] => App\Article Object ( [fillable:protected] => Array ( [0] => name [1] => description [2] => profile [3] => driverlicense [4] => zipcode [5] => published [6] => rank [7] => contact [8] => note [9] => pictures [10] => publisher ) [connection:protected] => [table:protected] => [primaryKey:protected] => id [perPage:protected] => 15 [incrementing] => 1 [timestamps] => 1 [attributes:protected] => Array ( [id] => 5 [name] => Test1 [description] => Lorem ipsum dolor sit amet, consetetur [profile] => Lorem ipsum dolor sit amet, consetetur [driverlicense] => yes [published] => no [rank] => 10 [contact] => 1 [pictures] => [zipcode] => 89429 [note] => [publisher] => 1 [created_at] => 2015-11-04 01:45:18 [updated_at] => 2015-11-04 10:07:24 ) [original:protected] => Array ( [id] => 5 [name] => Test1 [description] => Lorem ipsum dolor sit amet, consetetur [profile] => Lorem ipsum dolor sit amet, consetetur [driverlicense] => yes [published] => no [rank] => 10 [contact] => 1 [pictures] => [zipcode] => 89429 [note] => [publisher] => 1 [created_at] => 2015-11-04 01:45:18 [updated_at] => 2015-11-04 10:07:24 ) [relations:protected] => Array ( ) [hidden:protected] => Array ( ) [visible:protected] => Array ( ) [appends:protected] => Array ( ) [guarded:protected] => Array ( [0] => * ) [dates:protected] => Array ( ) [dateFormat:protected] => [casts:protected] => Array ( ) [touches:protected] => Array ( ) [observables:protected] => Array ( ) [with:protected] => Array ( ) [morphClass:protected] => [exists] => 1 [wasRecentlyCreated] => ) ) ) [1] => Illuminate\Database\Eloquent\Collection Object ( [items:protected] => Array ( [0] => App\Article Object ( [fillable:protected] => Array ( [0] => name [1] => description [2] => profile [3] => driverlicense [4] => zipcode [5] => published [6] => rank [7] => contact [8] => note [9] => pictures [10] => publisher ) [connection:protected] => [table:protected] => [primaryKey:protected] => id [perPage:protected] => 15 [incrementing] => 1 [timestamps] => 1 [attributes:protected] => Array ( [id] => 6 [name] => Test2 [description] => Lorem ipsum dolor sit amet, consetetur [profile] => Lorem ipsum dolor sit amet [driverlicense] => yes [published] => no [rank] => 3 [contact] => 1 [pictures] => [zipcode] => 89428 [note] => [publisher] => 1 [created_at] => 2015-11-04 01:45:38 [updated_at] => 2015-11-04 09:58:01 ) [original:protected] => Array ( [id] => 6 [name] => Test2 [description] => Lorem ipsum dolor sit amet, consetetur [profile] => Lorem ipsum dolor sit amet [driverlicense] => yes [published] => no [rank] => 3 [contact] => 1 [pictures] => [zipcode] => 89428 [note] => [publisher] => 1 [created_at] => 2015-11-04 01:45:38 [updated_at] => 2015-11-04 09:58:01 ) [relations:protected] => Array ( ) [hidden:protected] => Array ( ) [visible:protected] => Array ( ) [appends:protected] => Array ( ) [guarded:protected] => Array ( [0] => * ) [dates:protected] => Array ( ) [dateFormat:protected] => [casts:protected] => Array ( ) [touches:protected] => Array ( ) [observables:protected] => Array ( ) [with:protected] => Array ( ) [morphClass:protected] => [exists] => 1 [wasRecentlyCreated] => ) ) ) [2] => Illuminate\Database\Eloquent\Collection Object ( [items:protected] => Array ( ) ) ) 

EDIT 2

Я печатаю статьи из статьи $ article = Article :: all () ;, которая использует одно и то же представление возврата ('pages.articles', compact ('articles')); и отображает на том же сайте:

 Illuminate\Database\Eloquent\Collection Object ( [items:protected] => Array ( [0] => App\Article Object ( [fillable:protected] => Array ( ... ) [connection:protected] => [table:protected] => [primaryKey:protected] => id [perPage:protected] => 15 [incrementing] => 1 [timestamps] => 1 [attributes:protected] => Array ( ... ) [original:protected] => Array ( ... ) [relations:protected] => Array ( ) [hidden:protected] => Array ( ) [visible:protected] => Array ( ) [appends:protected] => Array ( ) [guarded:protected] => Array ( [0] => * ) [dates:protected] => Array ( ) [dateFormat:protected] => [casts:protected] => Array ( ) [touches:protected] => Array ( ) [observables:protected] => Array ( ) [with:protected] => Array ( ) [morphClass:protected] => [exists] => 1 [wasRecentlyCreated] => ) [1] => App\Article Object ( [fillable:protected] => Array ( .. ) [connection:protected] => [table:protected] => [primaryKey:protected] => id [perPage:protected] => 15 [incrementing] => 1 [timestamps] => 1 [attributes:protected] => Array ( ... ) [original:protected] => Array ( .. ) [relations:protected] => Array ( ) [hidden:protected] => Array ( ) [visible:protected] => Array ( ) [appends:protected] => Array ( ) [guarded:protected] => Array ( [0] => * ) [dates:protected] => Array ( ) [dateFormat:protected] => [casts:protected] => Array ( ) [touches:protected] => Array ( ) [observables:protected] => Array ( ) [with:protected] => Array ( ) [morphClass:protected] => [exists] => 1 [wasRecentlyCreated] => ) [2] => App\Article Object ( [fillable:protected] => Array ( .. ) [connection:protected] => [table:protected] => [primaryKey:protected] => id [perPage:protected] => 15 [incrementing] => 1 [timestamps] => 1 [attributes:protected] => Array (.. ) [original:protected] => Array ( .. ) [relations:protected] => Array ( ) [hidden:protected] => Array ( ) [visible:protected] => Array ( ) [appends:protected] => Array ( ) [guarded:protected] => Array ( [0] => * ) [dates:protected] => Array ( ) [dateFormat:protected] => [casts:protected] => Array ( ) [touches:protected] => Array ( ) [observables:protected] => Array ( ) [with:protected] => Array ( ) [morphClass:protected] => [exists] => 1 [wasRecentlyCreated] => ) ) ) 

Поэтому вывод из моего print_r ($ articles) должен быть примерно таким.

ИЗМЕНИТЬ 3

Мой текущий foreach:

 foreach($zipcodes as $key => $value) { //$code = $zipcodes[0]->zc_zip; // working, prints out one article //$article = Article::where('zipcode', $code)->get(); $article = Article::where('zipcode', $value->zc_zip)->get(); //print_r($article); } print_r($article);