2016-07-07 10 views
0

Первый @foreach ниже предоставляет пользователю, который создал сообщение. Мне нужен вывод, который будет пользователем, который разделил сообщение, которое возвращается вторым @foreach ниже.Две переменные в одном заявлении foreach laravel

Первый Foreach:

@foreach ($friendShares as $friendShare) 
<p> {{$friendShare->body}} by {{$friendShare->user->getname()}}</p> 
@endforeach 

Второй Foreach:

@foreach ($shares as $shares) 
<p> {{$shares->user->getname()}}</p> 
@endforeach 

Мой вопрос, Что такое правильный синтаксис для интеграции {{$ shares-> user-> GetName()}} в @foreach ($ friendShares в $ friendShare), что может быть что-то вроде этого:

@foreach ($friendShares as $friendShare , $shares as $shares) 
<p> {{$friendShare->body}} by {{$shares->user->getname()}}}}</p> 
+0

Либо использовать в запросе присоединиться при получении данных из БД или сделать массив, имеющий почтовый идентификатор, как ключ и имя общего ресурса в качестве значения. lke $ sharesArray [postid] = "имя пользователя"; –

ответ

0

Я не думаю, что это ро ssible идти в течение двух массивов в одном Еогеасп, вы могли бы, однако сделать следующее:

@for ($i = 0;$i < min([count($friendShares),count($shares)]);$i++) 
    <p> {{array_values($friendShares)[$i]->body}} by {{array_values($shares)[$i]->user->getname()}}}}</p> 

Это должно достичь желаемого результата.

+0

Я получил эту ошибку: array_values ​​() ожидает, что параметр 1 будет массивом, заданный объект –

+0

Извините, я предположил, что эти две переменные были массивами, обновленными для их применения. – apokryfos

+0

По-прежнему имеет следующую ошибку ... и большое спасибо за вашу поддержку и терпение :). Попытка получить свойство не-объекта (View: D: \ wamp \ www \ StuffSync \ resources \ views \ profile \ index.blade.php) .... который находится в строке цикла for –

0

вы всегда можете использовать два вложенных Еогеасп .... для этого магазина все значения некоторой переменной

@foreach ($shares as $shares) 
<p> <?php $shares_get_name = $shares->user->getname() ?></p> 
    @foreach($friendShares as $friendShare) 
<p> {{$friendShare->body}} by {{$shares_get_name}}</p> 
@endforeach 

Я надеюсь, что это то, что вы хотите ... если вы не можете, пожалуйста, разработать необходимо ур интеграции

0

Я изменил отношения в контроллере на запрос, который был более простым и понятным для меня (но до сих пор используются отношения, чтобы получить список $ myFriends):

код контроллера

 $myFriends = Auth::user()->friends()->lists('id'); 
     $sharedPosts = DB::table('shares') 
      ->join('users', 'users.id', '=', 'shares.user_id') 
      ->join('posts', function($join){ 
        $join->on('posts.id', '=', 'shares.post_id');     
       }) 
      ->where('shares.user_id', '=', $myFriends) 
      ->get(); 

return view('profile.index') 
     ->with('friendShares', $sharedPosts); 

Посмотреть код:

@foreach ($friendShares as $friendShare) 
<p> {{$friendShare->body}} by {{$friendShare->first_name}} {{$friendShare->last_name}}</p> 
@endforeach 
Смежные вопросы