代码:
<?php
class Catering extends \Eloquent {
protected $table = 'catering';
public $timestamps = FALSE;
public function offers() {
return $this->hasMany('Offer', 'cid');
}
}
class Offer extends \Eloquent {
protected $table = 'catering_offer';
public $timestamps = FALSE;
public function catering() {
return $this->belongsTo('Catering');
}
}
我能够做到
$offers = Catering::find(1)->offers;
但,反向无效:
$catering = Offer::find(1)->catering;
总是返回NULL。数据库具有正确的值。
优惠表有两列:
primary(id),int(cid)
引用了catering.id。
问题: 我怎样才能访问这种关系的反面?
答案 0 :(得分:2)
你这么说,I am able to do
$offers = Catering::find(1)->offers;
并在您的Catering
模型中
public function offers() {
return $this->hasMany('Offer', 'cid');
}
看起来你已经在这里定义了一个不同的外键(cid
)而不是laravel
基本上应该使用的默认外键,所以要做到你的反向关系在Offer
模型的catering
函数
public function catering() {
return $this->belongsTo('Catering', 'cid');
}
在Laravel Documentation中,它表示,您可以通过将第二个参数传递给hasMany
方法来覆盖传统的外键,例如
return $this->hasMany('Offer', 'custom_key');
同样,要在Offer
模型上定义关系的倒数,您可以使用belongsTo
方法,例如
return $this->belongsTo('Catering', 'custom_key'); // cid