2015-12-23 1 views
0

Я не уверен, что это действительно вопрос с laravel, но когда я dd (die and dump) этот dd ($ user-> friends()); Я получаю следующее. Я заметил, что это коллекция. Я не уверен, что это означает что-то другое или нет. Но это все равно должно быть множество вещей, которые я считаю. С первого пользователя на [0] знак и рядом [1], и т.д. ...Массив объектов, которые не будут зацикливаться на foreach в laravel

Collection {#184 ▼ 
    #items: array:2 [▼ 
    0 => User {#189 ▼ 
     #table: "users" 
     #fillable: array:7 [▶] 
     #hidden: array:3 [▶] 
     #connection: null 
     #primaryKey: "id" 
     #perPage: 15 
     +incrementing: true 
     +timestamps: true 
     #attributes: array:11 [▶] 
     #original: array:13 [▶] 
     #relations: array:1 [▶] 
     #visible: [] 
     #appends: [] 
     #guarded: array:1 [▶] 
     #dates: [] 
     #dateFormat: null 
     #casts: [] 
     #touches: [] 
     #observables: [] 
     #with: [] 
     #morphClass: null 
     +exists: true 
     +wasRecentlyCreated: false 
    } 
    1 => User {#190 ▼ 
     #table: "users" 
     #fillable: array:7 [▶] 
     #hidden: array:3 [▶] 
     #connection: null 
     #primaryKey: "id" 
     #perPage: 15 
     +incrementing: true 
     +timestamps: true 
     #attributes: array:11 [▶] 
     #original: array:13 [▶] 
     #relations: array:1 [▶] 
     #visible: [] 
     #appends: [] 
     #guarded: array:1 [▶] 
     #dates: [] 
     #dateFormat: null 
     #casts: [] 
     #touches: [] 
     #observables: [] 
     #with: [] 
     #morphClass: null 
     +exists: true 
     +wasRecentlyCreated: false 
    } 
    ] 
} 

Итак, когда я пытаюсь сделать что-то вроде:

foreach($user->friends() as $friend) { 
dd($friend); 
} 

Это то, что я получаю после делая это:

User {#189 ▼ 
    #table: "users" 
    #fillable: array:7 [▶] 
    #hidden: array:3 [▶] 
    #connection: null 
    #primaryKey: "id" 
    #perPage: 15 
    +incrementing: true 
    +timestamps: true 
    #attributes: array:11 [▶] 
    #original: array:13 [▶] 
    #relations: array:1 [▶] 
    #visible: [] 
    #appends: [] 
    #guarded: array:1 [▶] 
    #dates: [] 
    #dateFormat: null 
    #casts: [] 
    #touches: [] 
    #observables: [] 
    #with: [] 
    #morphClass: null 
    +exists: true 
    +wasRecentlyCreated: false 
} 

Я хочу, чтобы он прошел через всех пользователей, а не только первый. Есть ли причина, по которой это делается. Я делаю неправильный фолд или это имеет какое-то отношение к коллекции?

ответ

2

Когда вы делаете вашу foreach, вы видите только одну запись из-за dd(). Помните, что это «свалка и смерть», поэтому на самой первой итерации вы сбрасываете запись и затем умираете.

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

foreach($user->friends() as $friend) { 
    print_r($friend); 
} 
+0

Yeap вот что было спасибо другу! – NewbieCoder

-1

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

$friends = $user->friends()->toArray(); 
foreach($friends as $friend){ 
...some stuff... 
} 

В противном случае, использовать функции сбора Laravel в соответствии с Документами здесь: http://laravel.com/docs/5.2/collections

+0

Это подтолкнуло его к массиву, но по какой-то причине, если я это сделаю, я все равно получаю только одного пользователя. $ friends = $ user-> friends() -> toArray(); foreach ($ friends as $ friend) { dd ($ friend); } – NewbieCoder

+0

Я попытался сделать это хорошо, жаль, что этого не происходит, я в основном сделал то, что вы сказали, и внутри foreach dd ($ friend), и все еще получаю одного пользователя, но теперь получаю массив. – NewbieCoder

+0

Попробуй так и посмотри, работает ли он. $ friends = $ user-> friends-> toArray(); В противном случае, вы уверены, что у вас более 1 знакомого, связанного с пользователем? – trollkiller

0

использовать эхо для объектов, для использования массива print_r, метод дд() остановит выполнение после первой итерации

foreach($user->friends as $friend) { 
echo $friend->name; 

}

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