繁体   English   中英

Laravel口才如何建立逆向关系?

[英]How Do Inverse Relationships Work in Laravel Eloquent?

我有两个模型/表格: publishercampaign.

出版者

id | name

运动

id | name | PubID

我创建了一个关系来获取发布者的广告系列。

$this->hasMany(Campaign::class, 'PubID'); /* In Publisher Model */

我相信以上内容将帮助我检索相关的广告系列,但是我对逆向关系感到困惑。

如您所见, publisher表中没有键campaign_id 下面的关系足以满足反要求吗?

return $this->belongsTo('App\Publisher'); /* In Campaign Model */

有人可以指导我吗? 我会很感激。

是的,这就是所谓的one to many relationship ,这意味着一个发布者拥有许多广告系列。 相反的是,活动属于发布者。 因此,为了获得发布商的所有广告系列,您可以使用:

Publisher::find($id)->campaigns;

为了获得活动的发布者,您可以使用:

Campaign::find($id)->publisher;

您不需要在发布者表中使用campaign_id ,而在广告系列表中, PubID就是已知的。

您需要在belongsTo中指定外键名称

return $this->belongsTo('App\Publisher','PubID');

Laravel关系

您有两个模型,并添加了两个外部ID。 这是许多工作。 您只需要添加带有campain_id和publiser_id的数据透视表

这是多对多关系的一个很好的例子:一个发布者可以属于多个活动对象,而一个活动者可以具有多个发布者。

出版商

ID | 名称

活动

ID | 名称

campaign_publisher

campain_id | PUBLISHER_ID

列表中的最终表– campaign_publisher称为“数据透视表”,如主题标题中所述。

因此,选项1:

class Campaign extends Model
{
    /**
     * The products that belong to the shop.
     */
    public function publishers()
    {
        return $this->belongsToMany('App\Publisher');
    }
}

因此,选项2:

class Publisher extends Model
{
    /**
     * The shops that belong to the product.
     */
    public function campaigns()
    {
        return $this->belongsToMany('App\Campaign');
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM