代码:
<?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。数据库具有正确的值。
报价表有 2 列:
primary(id), int(cid)
引用 catering.id。
问题: 我怎样才能访问这个关系的反面?
最佳答案
你说过,我能做到
$offers = Catering::find(1)->offers;
在您的餐饮
模型中您拥有
public function offers() {
return $this->hasMany('Offer', 'cid');
}
看起来你在这里定义了一个不同的外键(cid
)来使用它,而不是laravel
基本上应该使用的默认外键,所以,执行相反的关系,您必须在 Offer
模型的 keeping
函数中执行相同的操作
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
关于php - Laravel 4,如何访问反向一对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18913560/