Laravel Relaton返回null

时间:2016-06-10 14:24:09

标签: php laravel laravel-4 laravel-5 eloquent

我有两张桌子

一个是另一个产品的产品

products
---------
id | offer_id

offers
---------
id | product_id

现在我想获得针对产品的所有优惠

在我写的产品模型中

public function getOfferDetails()
{
    return $this->belongsTo('App\Offer');
}

但它返回null。

3 个答案:

答案 0 :(得分:0)

您希望获得属于offers的所有product,对吧?你试过这个:

public function getOfferDetails()
{
    return $this->hasMany('App\Offer');
}

Product型号中?

答案 1 :(得分:0)

需要定义您的人际关系。根据你拥有的东西

产品可以有0个 - 多个优惠,优惠属于1个产品。

您需要一些外键来匹配模型。 OTB Laravel将尝试使用附加了_id的方法名作为外键。由于方法名称不同,因此需要将外键作为关系方法中的第二个参数传递。

产品型号应

public function getOfferDetails()
{
    return $this->hasMany('App\Offer', 'product_id');
}

优惠模型应

public function getProduct()
{
    return $this->belongsTo('App\Product', 'product_id');
}

Laravel Documentation也可能有所帮助。

答案 2 :(得分:0)

我认为这就是你要找的东西:

public function getOfferDetails()
{
    return $this->hasMany('App\Offer', 'id', 'offer_id');
    // as ceejayoz mentioned in comments, Laravel should be able to detect this themselves. The below would work the exact same as above
    // return $this->hasMany('App\Offer', 'id', 'offer_id')
}

$product->getOfferDetails()->get();