如何在laravel中创建3个模型之间的关系?

rst630

SQL 方案:

公告

  id increment

交易

  id increment
  seller_id
  buyer_id

Deals_items - 项目 = 公告

  id increment
  title
  desc
  bulletin_id
  deal_id

如何通过公告 ID 获取交易行?在原始 SQL 中,它看起来像:

select `deals`.* from `deals` inner join `deals_items` on `deals_items`.`deal_id` = `deals`.`id` where `deals_items`.`bulletin_id` = 10572

我试过了:

public function deals()
{
    return $this->hasManyThrough(DealItem::class,Deal::class, 'bulletin_id','dealid','id');
}

但这似乎是一种错误的方式。在 Laravel 文档中找不到关于关系的正确方法。

@HCK 显示正确的方式。

但是当我在刀片模板中执行 $bulletin->deals() 时,我得到了空的交易集合。

当只是 $bulletin->deal - 一切都很好时,我们有交易的集合。

我在公告模型中使用了受保护的 $with = ['deals'],但有什么不同的调用方法或属性?为什么方法为空结果?

肯尼·霍纳

@Amarnasan 很接近,但外键的顺序是错误的。试试这个:

交易.php

public function bulletins()
{
    return $this
        ->belongsToMany(Bulletin::class, 'deals_items', 'deal_id', 'bulletin_id')
        ->withPivot('title','desc');
}

公告.php

public function deals()
{
    return $this
        ->belongsToMany(Deal::class, 'deals_items', 'bulletin_id', 'deal_id')
        ->withPivot('title','desc');
}

文档

如前所述,为了确定关系连接表的表名,Eloquent 将按字母顺序连接两个相关模型名称。但是,您可以随意覆盖此约定。您可以通过向该belongsToMany方法传递第二个参数来实现

return $this->belongsToMany('App\Role', 'role_user');

除了自定义连接表的名称之外,您还可以通过向belongsToMany方法传递附加参数来自定义表上键的列名第三个参数是您在其上定义关系的模型的外键名称,而第四个参数是您要加入的模型的外键名称:

return $this->belongsToMany('App\Role', 'role_user', 'user_id', 'role_id');

更新

当您将关系作为方法$bulletin->deals()访问时您正在访问关系本身。这将返回\Illuminate\Database\Eloquent\Relations\BelongsToMany(在您的情况下)的实例此处查询尚未执行,因此您可以继续向查询添加约束,例如:

$bulletin
    ->deals()
    ->where('seller_id', 45) // <---
    ->skip(5) // <---
    -> ... (And so on)

当您将其作为动态属性访问时,您已经在执行查询,因此这将返回一个Collection实例。与将关系作为方法调用然后附加->get()在最后是一样的,所以这两个是等价的:

$bulletin->deals()->get()
// equals to:
$bulletin->deals

检查这个其他答案,它回答了你的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Laravel中建立3模型之间的关系?

来自分类Dev

如何在Realm中建立3个模型之间的关系模型?

来自分类Dev

3个表之间的Laravel模型关系

来自分类Dev

如何在Laravel 5中为此关系创建模型?

来自分类Dev

如何在laravel中的2个表之间建立关系

来自分类Dev

Laravel 3个模型之间的关系(组,成员,职位)

来自分类Dev

Laravel 关系:3 个模型

来自分类Dev

Rails中的3个模型之间的关系(老师,受试者,学生)

来自分类Dev

如何在 Laravel 中创建关系

来自分类Dev

Rails模型中2个表之间的关系如何?

来自分类Dev

如何在RubyOnRails中设置模型之间的依赖关系

来自分类Dev

如何在Laravel中的三个模型的枢轴中部署关系?

来自分类Dev

如何在bash中的两个循环之间创建一对一关系?

来自分类Dev

如何在图数据库中的节点之间创建两个关系

来自分类Dev

3种模型之间的Laravel关系

来自分类Dev

如何在laravel模型中定义多对多关系?

来自分类Dev

如何在邮递员中测试laravel模型关系

来自分类Dev

如何在 Laravel 中返回带有他的关系的模型?

来自分类Dev

如何在Spring JDBC中创建对象之间的关系?

来自分类Dev

如何在JetBrains的DataGrip中的表之间创建关系?

来自分类Dev

如何在 Javascript 中的数组之间创建主/从关系?

来自分类Dev

Laravel 模型在两个表之间创建两次关系

来自分类Dev

如何在3个实体(项目,它们的类别和其他字段)之间创建数据库关系?

来自分类Dev

如何在3个实体(项目,它们的类别和其他字段)之间创建数据库关系?

来自分类Dev

如何在laravel中为相同的两个模型创建多个数据透视表?

来自分类Dev

如何在neo4j中创建具有相同节点名称的两个节点之间的关系

来自分类Dev

如何在单个表之间创建关系?

来自分类Dev

3个表之间的Laravel关系

来自分类Dev

Laravel 3 个表之间的关系

Related 相关文章

  1. 1

    如何在Laravel中建立3模型之间的关系?

  2. 2

    如何在Realm中建立3个模型之间的关系模型?

  3. 3

    3个表之间的Laravel模型关系

  4. 4

    如何在Laravel 5中为此关系创建模型?

  5. 5

    如何在laravel中的2个表之间建立关系

  6. 6

    Laravel 3个模型之间的关系(组,成员,职位)

  7. 7

    Laravel 关系:3 个模型

  8. 8

    Rails中的3个模型之间的关系(老师,受试者,学生)

  9. 9

    如何在 Laravel 中创建关系

  10. 10

    Rails模型中2个表之间的关系如何?

  11. 11

    如何在RubyOnRails中设置模型之间的依赖关系

  12. 12

    如何在Laravel中的三个模型的枢轴中部署关系?

  13. 13

    如何在bash中的两个循环之间创建一对一关系?

  14. 14

    如何在图数据库中的节点之间创建两个关系

  15. 15

    3种模型之间的Laravel关系

  16. 16

    如何在laravel模型中定义多对多关系?

  17. 17

    如何在邮递员中测试laravel模型关系

  18. 18

    如何在 Laravel 中返回带有他的关系的模型?

  19. 19

    如何在Spring JDBC中创建对象之间的关系?

  20. 20

    如何在JetBrains的DataGrip中的表之间创建关系?

  21. 21

    如何在 Javascript 中的数组之间创建主/从关系?

  22. 22

    Laravel 模型在两个表之间创建两次关系

  23. 23

    如何在3个实体(项目,它们的类别和其他字段)之间创建数据库关系?

  24. 24

    如何在3个实体(项目,它们的类别和其他字段)之间创建数据库关系?

  25. 25

    如何在laravel中为相同的两个模型创建多个数据透视表?

  26. 26

    如何在neo4j中创建具有相同节点名称的两个节点之间的关系

  27. 27

    如何在单个表之间创建关系?

  28. 28

    3个表之间的Laravel关系

  29. 29

    Laravel 3 个表之间的关系

热门标签

归档