Laravel一对多模型关系不工作

qyuhtwio  于 2023-03-19  发布在  其他
关注(0)|答案(3)|浏览(119)

我有一个Booking模型,它可以有很多Service的。
我在预订模型中定义了如下关系:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\Service;

class Booking extends Model
{
    
    /**
     * Get the services for the booking.
     */
    public function services()
    {
        return $this->hasMany('App\Service');
    }
}

然后在我的BookingController中,我尝试获取当前预订的所有服务,如下所示:

public function create()
    {       
        $services = Booking::find(1)->services;
        return view('bookings.create');
    }

我一直收到错误:
正在尝试获取非对象的属性
不知道我在这里做错了什么。外键关系设置得很好。我在services表中有一个booking_id列引用了bookings表中的id

kyxcudwk

kyxcudwk1#

在这个特定的例子中,问题可能是Eloquent找不到一个带有id == 1的预订。
Booking::find(1);将查询1的Booking的主键。如果未找到主键,则将返回null。尝试将该null用作对象时将出现“尝试获取非对象的属性”错误。

0h4hbjxa

0h4hbjxa2#

如果您的密钥不是由laravel模型生成的,您可以尝试指定它们:

return $this->hasMany('App\Service', 'foreign_key', 'local_key');
anauzrmj

anauzrmj3#

public function create()
    {       
        $services = Booking::find(1)->services;
        return view('bookings.create');
    }

通过查看上面的代码:确保您有id为1的记录...如果是,请检查主键和外键。

相关问题