当前位置: 首页 > 面试题库 >

获取额外的数据透视表列laravel的值

梁祯
2023-03-14
问题内容

我有一个phone_models,phone_problems和一个phone_model_phone_problem数据透视表。数据透视表有一个额外的“价格”列。

手机型号:

class PhoneModel extends \Eloquent
{
    public function problems()
    {
        return $this->belongsToMany('RL\Phones\Entities\PhoneProblem')->withPivot('price');
    }
}

电话问题:

class PhoneProblem extends \Eloquent
{
    public function models()
    {
        return $this->belongsToMany('PhoneModel')->withPivot('price');
    }
}

我想做的是获取具有特定问题的特定手机的价格。

这就是我现在的方式,但是我觉得Laravel具有内置的Eloquent功能,我找不到用更简单的方式做到这一点:

$model = $this->phoneService->getModelFromSlug($model_slug);
$problem = $this->phoneService->getProblemFromSlug($problem_slug);

这一切都是从他们的中选择特定的模型和问题。

那么我要做的就是凭这些凭证获得价格,如下所示:

$row = DB::table('phone_model_phone_problem')
->where('phone_model_id', '=', $model->id)
->where('phone_problem', '=', $problem->id)
->first();

所以现在我可以得到这样的价格,$row->price但是我觉得需要一种更简单,更“ Laravel”的方式来做到这一点。


问题答案:

当对Eloquent使用“多对多”关系时,结果模型将自动获得pivot分配的属性。通过该属性,您可以访问数据透视表列。尽管默认情况下,枢轴对象中只有键。为了将列也放入其中,您需要在定义关系时指定它们:

return $this->belongsToMany('Role')->withPivot('foo', 'bar');

官方文件

如果您需要更多与Eloquent配置关系的帮助,请告诉我。

编辑

要查询价格,请执行此操作

$model->problems()->where('phone_problem', $problem->id)->first()->pivot->price


 类似资料:
  • 问题内容: 用户模型: 职位模型: 在表单提交时,我有两个数组: 使用 可以按预期将position_user表与用户和相应的位置ID同步。 但是我不知道如何填充多余的字段(“ company_id”) 这是我期望的工作方式: 我已经阅读了手册,但是我只是看不到如何处理这些数组,因为手册中的示例似乎与以下情况有关:要填充的额外字段不是多个项目的数组: 我尝试使用此答案 合并两个数组: 并获得$ s

  • 事实上,我的问题很简单,但我找不到任何答案。 我使用的是Laravel Elotent,我有3张桌子: 一个数据透视表叫做: 我已经从我的公司对象中获得了,我正在尝试获取

  • 我正在尝试保存数据透视表中多列的数据。但是,数据没有保存。下面是我正在做的事情: 表 刀片 如果我只使用checkbox来同步benefit_id和user_id,它就能工作。但如果添加额外的数据amount1和amount2,则不起作用。 控制器 事先谢谢你的帮助。

  • 我对从透视表订购记录有问题。我有三个表(多对多关系)像这样: 菜单 id 名称 页码 id 名称 menu_page id name 次序 menu_page_id menu_id page_id 如何使用Eloquent从数据透视表(菜单页面)中获取按“顺序”属性排序的所有记录?

  • 在Laravel 4中,当使用4.2文档中描述的多对多关系时,我如何让Laravel为我创建透视表? 我是否需要在我的迁移中为所涉及的两个模型添加一些东西?是否需要手动创建数据透视表的迁移?或者Laravel如何知道创建透视表? 到目前为止,我所做的一切就是将

  • 我正在制作一个VueJS表单,用户可以在其中编辑一个步骤。一个步骤可以有许多父产品。逻辑是一个步骤可以属于多个产品。我有一个名为products、product_step(透视表)和steps的表。 当用户第一次加载页面时,该数组将填充此stap的父产品。 此阵列将根据用户决定在前端执行的操作进行更改。假设他们希望产品n不再具有此步骤的访问权限。在这种情况下,产品将从阵列中删除。 我面临的问题是,