Php 无枢轴模型的雄辩关系

Php 无枢轴模型的雄辩关系,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我有3张表格: 客户:字段:id、名称 项目:字段:id、名称 客户项目:字段:客户id、项目id、数量 客户和项目有我们所期望的各自的型号 问题:如果没有枢轴模型,我如何将这两个(客户和项目)联系起来。 我想使用$customer->items直接获取客户项目,而不是执行$customer->customerItem->items,因为我不想按项目跟踪customerItems和customer 此外,我不能直接为项目模型使用customer\u items表,因为我可能需要检索其控制器中的所

我有3张表格:

  • 客户
    字段:id、名称
  • 项目
    字段:id、名称
  • 客户项目
    字段:客户id、项目id、数量
  • 客户
    项目
    有我们所期望的各自的型号

    问题:如果没有枢轴模型,我如何将这两个(客户和项目)联系起来。

    我想使用
    $customer->items
    直接获取客户项目,而不是执行
    $customer->customerItem->items
    ,因为我不想按项目跟踪customerItems和customer


    此外,我不能直接为
    项目
    模型使用
    customer\u items
    表,因为我可能需要检索其控制器中的所有项目。

    正如@kerbholz所指出的(但他们没有创建答案),在您的客户模型中,您需要以下功能:

    公共功能项()
    {
    返回$this->belongtomany('App\Item');
    }
    
    假设您的项目模型类位于
    应用程序中。您也可以在项目模型中执行相反的操作

    现在,您应该能够执行
    $customer->items
    并获得一组项目。 如果要包括
    数量
    字段,则需要:

    公共功能项()
    {
    返回$this->belongstomy('App\Item')->withPivot('qty');
    }
    

    请注意,您仍然需要透视表,您无法逃避它,但现在您可以以更优雅的方式导航它。

    创建
    customer\u items
    表并包括
    custmer\u item\u id
    user\u id
    。在
    用户
    模型中包括此功能

    public function basket() // example
        {
            return $this->belongsToMany(User::class, 'customer_items', 'user_id', 'custmer_item_id');
        }
    

    “与其做$customer->customerItem->items”如何设置模型关系?@kerbholz这是一个问题,我该如何设置客户可以与项目有很多关系,而不必为CustomerItems设置枢轴模型。考虑到客户模型中有一个数据透视表,设置关系有许多与客户项目模型的关系否,我的意思是,您的模型现在在代码中的关系如何?!您需要的是“标准”行为,因为项目模型的表是
    项目
    ,它如何知道它从数据透视表获取关系?如果我用不同的方式命名它,比如
    customer\uuuuuuuu\items\u collection
    。要使它在Laravel框架内工作,并让Laravel神奇地处理它,您必须遵守命名约定。数据透视表名称的字母顺序是modelA\u modelB谢谢!终于有了意义。顺便说一句,您可以通过将第二个参数传递给BelongToMany来指定透视表
    belongtomany('App\Item'、'customer\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu items\u collection')
    这太令人困惑了,为什么拉威尔要用belongt