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)

category.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) 基本的に使用するはずのデフォルトのものの代わりにそれを使用するため、逆の関係を行うには、モデルの関数laravelで同じことを行う必要がありますOffercatering

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

Laravel Documentationでは、次のhasManyようにメソッドに2 番目の引数を渡すことで、従来の外部キーをオーバーライドできると書かれています。

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

同様に、モデルで関係の逆を定義するには、次のようなメソッドOfferを使用できますbelongsTo

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