Laravel 1 个外键,2 个表 Eloquent ORM

Posted

技术标签:

【中文标题】Laravel 1 个外键,2 个表 Eloquent ORM【英文标题】:Laravel 1 foriegn key, 2 tables Eloquent ORM 【发布时间】:2015-02-02 16:04:11 【问题描述】:

我有 4 张桌子,想把它们绑在一起,但我迷路了。

User
  'id'
  'name' // etc...

Product
  'id'
  'name' // etc...

AnonCart
  'id'
  'unique_id' //tied to session id
  'product_id' // tied to 'id' of Product
  'quantity' //

UserCart
  'id'
  'user_id' //tied to 'id' of User
  'product_id' // tied to 'id' of Product
  'quantity' //

我正在尝试在 Eloquent 中为我的 Laravel 项目建立这些关系

我有以下

User.php

public function userCarts()

    $this->hasMany('\Namespace\UserCart');

UserCart.php

public function user()

    $this->belongsTo('\Namespace\User');

public function product()

    $this->belongsTo('\Namespace\Product');

AnonUser.php

// doesn't have a user tied to it...
public function product()

    $this->belongsTo('\Namespace\Product');

最后,我不知道在这里做什么。我不知道如何定义产品与购物车的关系

Product.php

public function carts()

    $this->hasMany('\Namespace\UserCart'); // AnonCart?? 

如何解决将产品链接到 2 个不同的表但在两个表上具有相同键的问题?

是否像拥有 2 个方法一样简单(anonCarts() 和 userCarts() ??)

【问题讨论】:

是的,只有两种方法。也许是userCarts 方法和anonCarts 方法。 【参考方案1】:

Product.php

public function userCarts()

    $this->hasMany('\Namespace\UserCart');


public function anonCarts()

    $this->hasMany('\Namespace\AnonCart');

【讨论】:

以上是关于Laravel 1 个外键,2 个表 Eloquent ORM的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent 用于数据透视表,一个表有 2 个外键,另一个表有 1 个外键

laravel 5.2中一列上有2个外键

Laravel中带有2个外键的搜索栏

laravel errno 150 外键约束格式不正确

具有 2 个外键实体框架的表

如何在 SQL Server 的表中添加 2 个外键?