2

代码:

<?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 列:

主要(id),int(cid)

引用了餐饮.id。

问题: 我怎样才能访问这种关系的反面?

4

1 回答 1

2

你之前这么说,I am able to do

$offers = Catering::find(1)->offers;

在你的Catering模型中你有

public function offers() {
    return $this->hasMany('Offer', 'cid');
}

似乎您在这里定义了一个不同的cid外键(laravelOffercatering

public function catering() {
    return $this->belongsTo('Catering', 'cid');
}

Laravel 文档中,它说,您可以通过将第二个参数传递给hasMany方法来覆盖传统的外键,例如

return $this->hasMany('Offer', 'custom_key');

同样,要在模型上定义关系的倒数Offer,您可以使用该belongsTo方法,例如

return $this->belongsTo('Catering', 'custom_key'); // cid
于 2013-09-25T21:14:21.137 回答