我是laravel的新手.可能是问题没有匹配问题.问题是.我有数据库表一对多像酒店和房间.一个酒店可以有多个房间.我的目标是:
public function edit($id) {
echo $id;
// get the hotel
$data['hotel'] = Hotel::find($id);
$data['rooms'] = Room::where("hotelId", $id)->get();
// show the edit form and pass the hotel
return view('include.middle')->nest('main', 'hotel.edithotel', $data);
}
我从房间和酒店的桌子上获取数据.毫无疑问,可以有多个房间.
editHotel.blade.PHP
//for hotel
{{ Form::model($hotel, array('route' => array('hotel.update', $hotel->hotelId), 'method' => 'PUT')) }}
//for room. I want to run this in loop so that I can get data to edit for multiple rooms.
{{ Form::model($rooms, array('route' => array('room.update', $rooms->roomId), 'method' => 'PUT')) }}
但我得到的错误是
Undefined property: Illuminate\Database\Eloquent\Collection::$roomId (View: /Users/apple/hotelbooking/resources/views/hotel/edithotel.blade.PHP)
我在房间和酒店模型中设置了主键.
数据库架构.
Hotel
hotelId | name | address
1 | example hotel somewhere
Room
roomId | hotelId | name | price
1 1 Delux $300
2 1 Economy $100
解决方法:
主键没有任何问题或laravel有任何问题.
问题是你像laravel所说的那样,试图从COLLECTION中获取一个未定义的属性.
一个集合是一个Laravel对象,它有点像一个数组(你可以读取更多here的集合)
{{ Form::model($rooms, array('route' => array('room.update', $rooms->roomId), 'method' => 'PUT')) }}
在foreach循环中.
@foreach($rooms as $room)
{{ Form::model($room, array('route' => array('room.update', $room->roomId), 'method' => 'PUT')) }}
@endforeach
这样您将使用对象而不是集合
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。