我有一个Booking
模型,可以有很多Service
个。
我在Booking模型中定义了这样的关系:
<?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');
}
我一直收到错误:
尝试获取非对象的属性
不确定我在这里做错了什么。外键关系都设置得很好。我在booking_id
表中有一个services
列,引用了id
表上的bookings
。
任何帮助都将不胜感激。
答案 0 :(得分:1)
在这种特殊情况下,问题可能是Eloquent无法找到id == 1
的预订。
Booking::find(1);
将查询预订1
的主键。如果未找到,则会返回null
。尝试将null
用作对象是“尝试获取非对象属性”错误。
答案 1 :(得分:0)
如果您的密钥不是laravel模型生成的密钥,您可以尝试指定它们:
return $this->hasMany('App\Service', 'foreign_key', 'local_key');
答案 2 :(得分:0)
public function create()
{
$services = Booking::find(1)->services;
return view('bookings.create');
}
通过查看上面的代码:确保您拥有ID为1的记录。如果是,请检查您的主键和外键。