在laravel

时间:2015-12-23 04:00:26

标签: php arrays laravel

我不确定这是否真的是一个laravel问题,但是,当我dd(死亡和转储)这个dd($ user-> friends());我得到以下内容。我注意到它是一个集合。我不确定这是否意味着不同的东西。但它仍然应该是我相信的一系列项目。第一个用户位于[0]标记,下一个[1]等等......

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
}

我希望它遍历所有用户而不仅仅是第一个用户。有没有理由这样做。我是在做foreach错误还是与收集有关?

3 个答案:

答案 0 :(得分:2)

当您执行$array = array_values($array); $new_array = array(); foreach($array as $row){ $new_array[$row['title']] = $row['title']; } 时,由于foreach,您只能看到一个条目。请记住,它是“转储和死亡”,所以在第一次迭代时,你会丢弃记录然后死亡。

试试这个:

dd()

答案 1 :(得分:0)

对象使用echo,对于数组使用print_r,dd()方法将在第一次迭代后停止执行

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

}

答案 2 :(得分:-1)

如果您只想将其视为数组,请先在集合上使用toArray。例如:

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

否则,请按照此处的文档使用laravel集合的功能: http://laravel.com/docs/5.2/collections