我有一个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
。
3条答案
按热度按时间kyxcudwk1#
在这个特定的例子中,问题可能是Eloquent找不到一个带有
id == 1
的预订。Booking::find(1);
将查询1
的Booking的主键。如果未找到主键,则将返回null
。尝试将该null
用作对象时将出现“尝试获取非对象的属性”错误。0h4hbjxa2#
如果您的密钥不是由laravel模型生成的,您可以尝试指定它们:
anauzrmj3#
通过查看上面的代码:确保您有id为1的记录...如果是,请检查主键和外键。