【发布时间】:2018-11-18 15:05:45
【问题描述】:
它是一个使用 Order 模型在控制器中进行的简单查询:
$orders = Order::where('user_id', auth()->user()->id)
->orderBy('created_at', 'desc')
->get();
return dd($orders);
dd 给出以下结果:(这是正确的)
Collection {#269 ▼
#items: array:2 [▼
0 => Order {#270 ▼
#dates: array:1 [▶]
#fillable: array:6 [▶]
#connection: "mysql"
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:9 [▶]
#original: array:9 [▶]
#changes: []
#casts: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#guarded: array:1 [▶]
#forceDeleting: false
}
1 => Order {#271 ▼
#dates: array:1 [▶]
#fillable: array:6 [▶]
#connection: "mysql"
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:9 [▶]
#original: array:9 [▶]
#changes: []
#casts: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#guarded: array:1 [▶]
#forceDeleting: false
}
]
}
但是当我遍历 $orders 集合 foreach 循环时,只显示第一个数组,第二个数组不可访问... foreach 循环有什么问题...?
$temp='';
foreach($orders as $order){
$temp.= $order->product; // accessing the belongTo method
}
dd($temp);
这是输出(只显示一个数组):
"{"id":13,"created_at":"2018-06-06 15:28:21","updated_at":"2018-06-06 18:36:28","type":0,"title":"product 3","description":"this is product no 3 with 5 images","images":"night-product-watch-dramatic-84475_1528310188.jpeg,night-product-watch-dramatic-84475_1528310188.jpeg","alive":1,"user_id":1,"deleted_at":null} ◀"
【问题讨论】:
-
显示模型定义。
-
class Product extends Model { use SoftDeletes; /** * The attributes that should be mutated to dates. * * @var array */ protected $dates = ['deleted_at']; Protected $fillable= ['title', 'type', 'description','images','alive']; public function user(){ return $this->belongsTo('App\User'); } public function orders(){ return $this->hasMany('App\Order'); } } -
class Order extends Model { use SoftDeletes; /** * The attributes that should be mutated to dates. * * @var array */ protected $dates = ['deleted_at']; Protected $fillable= ['comments', 'product_id', 'type', 'user_id', 'alive', 'granted']; public function user(){ return $this->belongsTo('App\User'); } public function product(){ return $this->belongsTo('App\Product'); } } -
你能用 var_dump($order) 看看第二个订单的输出是什么吗?我的意思是在 foreach 里面
-
Foreach 是正确的,我认为只是你绊倒了 X)
标签: php laravel collections foreach