Php Laravel一对多关系不起作用

Php Laravel一对多关系不起作用,php,laravel,forge,Php,Laravel,Forge,我正在做酒店预订系统的任务。我有一张名为“预订”的桌子和另一张桌子。我在它们之间建立了一对多关系,我想将房间名称返回到主视图,但它总是显示试图获取非对象的属性。这是我的密码。 预订控制器Class GuestBookingController扩展控制器 public function new() { $rooms = Room::all(); $guests = Guest::all(); return view('guestbookings.new', compact(

我正在做酒店预订系统的任务。我有一张名为“预订”的桌子和另一张桌子。我在它们之间建立了一对多关系,我想将房间名称返回到主视图,但它总是显示试图获取非对象的属性。这是我的密码。 预订控制器Class GuestBookingController扩展控制器

public function new()
{
    $rooms = Room::all();
    $guests = Guest::all();
    return view('guestbookings.new', compact('rooms','guests'));
}

public function store(Request $request)
{
    $validatedData = $request->validate([
        'checkin_dtime' => 'required',
        'checkout_dtime' => 'required',
        'id_number' => 'required|unique:guests',
        'mobile' => 'required',
         ]);

    $result = Booking::where('checkin_dtime', '<=',$request->checkin_dtime)->where('checkout_dtime', '>=',$request->checkout_dtime)->where('room_id',$request->room_id)->first();
   if(!$result){
   $bookings = new Booking;
   $bookings->checkin_dtime = $request->input('checkin_dtime');
   $bookings->checkout_dtime = $request->input('checkout_dtime');
   $bookings->user_id = auth()->user()->id;
   $bookings->save();
   $guests = new Guest;
   $guests->id_number = $request->input('id_number');
   $guests->mobile = $request->input('mobile');
   $guests->save;

}
  return redirect('home');

根据问题,这是您的控制器代码:

$bookings = new Booking;
$bookings->checkin_dtime = $request->input('checkin_dtime');
$bookings->checkout_dtime = $request->input('checkout_dtime');
$bookings->user_id = auth()->user()->id;
$bookings->save();
您没有添加任何
房间id
列。这意味着您的
房间id
在数据库中为空。所以,当你试图调用关系,雄辩是无法建立关系,你得到的错误。您的代码应该是:

$bookings = new Booking;
$bookings->checkin_dtime = $request->input('checkin_dtime');
$bookings->checkout_dtime = $request->input('checkout_dtime');
$bookings->room_id = $request->input('room_id');
$bookings->user_id = auth()->user()->id;
$bookings->save();

您是否在您的
房间
预订
模型中定义了
有许多
属于
的项目?请分享您的关系代码。您提供的代码与此无关。当您保存预订时,我可以看到您没有添加任何房间id。是的,我在预订中定义了modelroom有许多最漂亮的房间。客人在房间检查中,我添加了如何保存房间?谢谢,它对我有效,数据库中总是显示空,现在显示房间名称。
$bookings = new Booking;
$bookings->checkin_dtime = $request->input('checkin_dtime');
$bookings->checkout_dtime = $request->input('checkout_dtime');
$bookings->user_id = auth()->user()->id;
$bookings->save();
$bookings = new Booking;
$bookings->checkin_dtime = $request->input('checkin_dtime');
$bookings->checkout_dtime = $request->input('checkout_dtime');
$bookings->room_id = $request->input('room_id');
$bookings->user_id = auth()->user()->id;
$bookings->save();